У меня есть директива, которая создает в коде экземпляр шаблона компонента, который он использует, и устанавливает его innerHTml, который изменит размер tempalte:
var factory = this.resolver.resolveComponentFactory(MyComponentTemplate);
this.templateComponent = this.viewContainerRef.createComponent(factory);
this.templateComponent.instance.htmlStr = anyText;
Вот в чем проблема. На этом этапе я получу undefined по размерам компонентов:
console.log(this.templateComponent.instance.width); //undefined
console.log(this.templateComponent.instance.height); //undefined
При отладке я заметил, что только после того, как мой компонент запустит ngAfterViewInit(), только тогда я смогу прочитать ширину и высоту шаблона компонента из моей директивы и использовать эти значения.
Есть ли способ, которым я могу сказать своей директиве подождать, пока ngAfterViewInit() не закончится, а затем сделать то, что мне нужно, из моей директивы с той информацией, которую я ищу.
ngAfterViewInit
? Почему бы вам просто не поставить его послеthis.createComponent()
? Возможно, вам придется сначала ввестиChangeDetectorRef
и вызватьcdRef.detectChanges()
. - person Günter Zöchbauer   schedule 27.04.2017