1
我們可以在動態加載組件時注入不同的提供者嗎?在Angular 2中使用ComponentResolver加載組件時注入不同的提供者
我組分
@Component({
moduleId: module.id,
selector: "my-component",
template: "<div>my-component</div>",
providers: [MyComponentService]
})
export class MyComponent{
constructor(private ds: MyComponentService) {
super();
}
}
一些別的地方,
this._cr.resolveComponent(MyComponent).then(cmpFactory => {
let instance: any = this.testComponentContainer.createComponent(cmpFactory).instance;
});
所以在上面的代碼中,而解決MyComponent
,供應商爲這個MyComponentService
也將得到解決,我們可以不同的解決問題基於一些開關?
所以是很好的假設,如果我不加提供商參數,並使用注射器然後組件工廠將同時動態加載組件注入MyComponentService? –
我原本以爲沒有人通過(未測試)時,父注入器會被傳遞。如果這不起作用,那麼只需將其注入當前組件並將其轉發給'createComponent(...)',或者如果您想添加其他提供程序,則創建一個子注入器。 –
當我嘗試使用this.testComponentContainer.createComponent(cmpFactory,<我應該傳遞給我什麼,因爲我已經有ViewContainerRef,它要求我傳遞索引,如果我傳遞0或null拋出錯誤>,注入器)。有什麼建議麼? –