编译发生error

来源:4-13 依赖注入(1)

Jimmy367

2020-05-21

编译报错:No suitable injection token for parameter ‘name’ of class ‘Product’.
请问原因是什么?

ngOnInit() 中代码如下;
const injector = Injector.create({
providers:[
{
provide: Product, //标识符
//useClass: Product //类名
useFactory: () => { //工厂
return new Product(‘aaaa’, ‘bbbb’);
},
deps: [] //要依赖池子中的其他标识符
},
{
provide: PurchaseOrder,
useClass: PurchaseOrder,
deps:[Product]
}
]
});

要注入的类下记参照:
@Injectable()
export class Product {
constructor(private name: string, private color: string) {
}
}

@Injectable()
export class PurchaseOrder {
//private product :Product;
private amount: number;
constructor(private product:Product) {
//this.product = new Product(‘大米手机’,‘黑色’);
}
}

写回答

1回答

接灰的电子产品

2020-05-23

构造里面的参数,默认都是注入的,所以会提示错误,你需要创建 InjectionToken

import {InjectionToken} from '@angular/core';export 
const PRODUCT_NAME_TOKEN= new InjectionToken<string>('PRODUCT_NAME');
const PRODUCT_COLOR_TOKEN= new InjectionToken<string>('PRODUCT_COLOR');

然后使用 @inject 注解应用到参数上

constructor(private @Inject(PRODUCT_NAME_TOKEN
) name: string, private @Inject(PRODUCT_COLOR_TOKEN
) color: string) {
}


0
2
Jimmy367
为什么课件视频里没有报编译错误呢?
2020-05-26
共2条回复

Angular 开发拼多多webapp 从基础到项目实战

高仿拼多多WebApp,带你在实战环境中学习Angular

1322 学习 · 451 问题

查看课程