当前位置: 首页 > news >正文

angular注入方法providers

在Angular中有很多方式可以将服务类注册到注入器中:

@Injectable 元数据中的providedIn属性
@NgModule 元数据中的 providers属性
@Component 元数据中的 providers属性
创建一个文件名叫名 hero.service.ts叫 hero 的服务
 hero.service.ts

import { Injectable } from '@angular/core';@Injectable({providedIn: 'root',
})
export class HeroService {constructor() { }// 新增加setName方法setName(name:string):string{return `姓名:${name}`;}}


1.@Injectable 元数据中的providedIn属性

providedIn: 'root' 告诉 Angular在根注入器中注册这个服务,这也是使用CLI生成服务时默认的方式.
这种方式注册,不需要再@NgModule装饰器中写providers,而且在代码编译打包时,可以执行摇树优化,会移除所有没在应用中使用过的服务。推荐使用此种方式注册服务

使用providedIn的话,后面直接在项目中使用了。

使用:heroes.component.ts

import { Component, OnInit } from '@angular/core';
import { HeroService } from '../hero.service'@Component({selector: 'app-heroes',templateUrl: './heroes.component.html',styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {constructor(private heroService:HeroService) { }ngOnInit() {this.heroService.setName('张三');}
}


2.@NgModule 元数据中的 providers属性

改写 hero.service.ts里面的@Injectable,如下

import { Injectable } from '@angular/core';@Injectable() // 删掉了 {providedIn: 'root'}
export class HeroService {...}


 xx.module.ts , 例如app.module.ts

...@NgModule({providers: [HeroService,// { provide: HeroService, useValue: HeroService }],
})...


然后就可以在使用拉,使用方法,同1 heroes.component.ts文件

3.@Component 元数据中的 providers属性

 hero.service.ts里面的@Injectable,删掉 {providedIn: 'root'},同2 hero.service.ts文件

改写heroes.component.ts

import { Component, OnInit } from '@angular/core';
import { HeroService } from '../hero.service'@Component({selector: 'app-heroes',templateUrl: './heroes.component.html',styleUrls: ['./heroes.component.css'],providers: [HeroService] // 新增 providers: [HeroService]
})
export class HeroesComponent implements OnInit {constructor(private heroService:HeroService) { }ngOnInit() {this.heroService.setName('张三');}
}


 

三种用法总结:

@Injectable 元数据中的providedIn属性  

//service.ts
@Injectable({providedIn:'root'})//component.ts
constructor(private heroService:HeroService) { }


@NgModule 元数据中的 providers属性

// service.ts
@Injectable() //module.ts
@NgModule({providers: [HeroService ]
})


@Component 元数据中的 providers属性

// service.ts
@Injectable() // component.ts
@Component({...selector: 'app-heroes',providers: [ HeroService ]
})


原文链接:https://blog.csdn.net/sllailcp/article/details/102548144

http://www.lryc.cn/news/128971.html

相关文章:

  • Git提交规范指南
  • QT之UDP通信
  • 一、进入sql环境,以及sql的查询、新建、删除、使用
  • 向日葵如何截图
  • 固定资产折旧报表
  • ubuntu18 下更改 mysql 数据目录
  • Arduino看门狗定时器WDT
  • 大数据岗位秋招面试八股文总结(不定时更新)
  • MATLAB高分辨率图片
  • Spring Clould 消息队列 - RabbitMQ
  • 【SpringBoot】中的ApplicationRunner接口 和 CommandLineRunner接口
  • 微信小程序前后端开发快速入门(完结篇)
  • 【Linux】进程间通信之消息队列
  • 一次Linux中的木马病毒解决经历(6379端口---newinit.sh)
  • ProtoBuf
  • AJ-Captcha行为验证在vue中的使用
  • Layui列表复选框根据条件禁用
  • K8S核心组件etcd详解(下)
  • 【HarmonyOS】【DevEco Studio】ohpm安装失败该如何解决?
  • STM32 cubemx CAN
  • 贴片电阻封装尺寸及焊盘尺寸
  • 软考笔记——9.软件工程
  • uniapp小程序实现上传图片功能,并显示上传进度
  • 基于物理场的动态模式分解(piDMD)研究(Matlab代码实现)
  • Docker部署rabbitmq遇到的问题 Stats in management UI are disabled on this node
  • Python搭建http文件服务器实现手机电脑文件传输功能
  • 微信小程序实现拖拽的小球
  • uniapp的逆地理编码 和地理编码
  • 在Centos环境中搭建Nginx环境
  • 20W IP网络吸顶喇叭 POE供电吸顶喇叭