1
我有一個在代碼中創建,他使用組件模板實例的指令,並設置它的innerHTML,這將改變tempalte尺寸:如何等待ngAfterViewInit()從指令創建組件的實例時運行?
var factory = this.resolver.resolveComponentFactory(MyComponentTemplate);
this.templateComponent = this.viewContainerRef.createComponent(factory);
this.templateComponent.instance.htmlStr = anyText;
現在,這裏的問題。在這個階段,我會得到不確定的部件尺寸:
console.log(this.templateComponent.instance.width); //undefined
console.log(this.templateComponent.instance.height); //undefined
在調試我發現我的部件運行ngAfterViewInit()只後,才把我可以閱讀我的指令分量模板寬度和高度,使用該值。
有沒有一種方法,我可以告訴我的指令要等到ngAfterViewInit()結束, 比做什麼,我從我的指令與信息,我正在尋找需要。
爲什麼需要在'ngAfterViewInit'中?你爲什麼不把它放在'this.createComponent()'之後?您可能需要首先注入'ChangeDetectorRef'並調用'cdRef.detectChanges()'。 –
你絕對正確。調用detectChanges後,它工作。非常感謝,你爲我節省了很多錢 – AngularOne