[英]How to inject parent component service into dynamic component in Angular?
我正在使用 Angular 8,並且我已經動態創建了組件。 我將服務的父組件放入提供者數組中。 如何將父MyService
的相同實例注入動態組件? 如果沒有動態組件,我可以通過注入該服務的子組件的構造函數來實現它。 但是我如何使用動態組件來做到這一點? 這是創建動態組件的代碼
@Component({
selector: 'app-parent',
templateUrl: './parent.component.html',
providers: [MyService],
})
export class ParentComponent {
constructor(
private componentFactoryResolver: ComponentFactoryResolver,
private myService: MyService,
) {
}
createDynamicComponent() {
const injector: Injector = Injector.create({
providers: [
{
provide: MAT_DATE_FORMATS,
useValue: getMatDateFormat(this.dateFormat),
},
],
})
this.dynamicPlaceholder.clear()
const componentFactory = this.componentFactoryResolver
.resolveComponentFactory(DynamicComponent)
const componentRef = this.dynamicPlaceholder
.createComponent(componentFactory, 0, injector)
}
}
問題出在這些行中:
const injector: Injector = Injector.create({
providers: [
{
provide: MAT_DATE_FORMATS,
useValue: getMatDateFormat(this.dateFormat),
},
],
})
我從頭開始創建了一個動態組件注入器。 所以它對父注入器一無所知。 結果 - 不知道父提供者。 我需要做的就是向Injector.create
函數添加parent
參數:
const injector: Injector = Injector.create({
providers: [
{
provide: MAT_DATE_FORMATS,
useValue: getMatDateFormat(this.dateFormat),
},
],
parent: this.injector
})
this.injector
被注入到父組件的構造函數中:
constructor(private injector: Injector) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.