Angular 依赖注入

来源:互联网 发布:《电力网络》 编辑:程序博客网 时间:2024/06/05 03:34

**依赖注入是实现控制反转的一种实现方式,
好处在于:降低耦合、使用组件常用性提高、便于测试**

在Angular中实现依赖注入需要三步:
1. 创建一个service,这个service就是要依赖注入的对象
2. 写提供器
3. 在构造函数中注入(Angular 只允许在构造函数中注入)

实例一:实现一个最简单依赖注入

先创建一个service :

ng g service shared/product

service 一般我们放在shared目录下面

实现product.service:

import { Injectable } from '@angular/core';@Injectable()export class ProductService {  constructor() {}  getProducts(): Product[] {    '''''''''  }}

@Injectable()是一个修饰器,其作用是允许在该service中注入其他的service

写提供器(写在 app.module.ts中):

  providers: [ProductService],

这个是providers: [{provide:ProductService;useClass:ProductService }] 的缩写,也是最简单的一个提供器。后面会有一个使用工厂方法实现的提供器。

在构造函数中注入

constructor(private productService: ProductService) {}``现在就可以调用构造函数中的方法了。实例二:使用工厂方法写提供器--------------先上一段代码,然后来解释:

providers: [
{ provide: ProductService,
useFactory: (logger: LoggerService, isDevEnv) => {
………………
},
deps: [LoggerService, ‘IS_DEV_ENV’],
},
LoggerService,
{ provide: ‘IS_DEV_ENV’, useValue: false }
],
“`
基本形式为:{ provide:ProductService, useFactory:(传入的变量)=>{具体如何选择service的实现} }
deps: [ ]; 这个数组储存工厂模式传入的变量类型(变量类型必须是提供器中声明了类型)
{ provide: ‘IS_DEV_ENV’, useValue: false } 定义一个变量的依赖注入;

原创粉丝点击