编译发生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回答
-
构造里面的参数,默认都是注入的,所以会提示错误,你需要创建 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) { }022020-05-26
相似问题