我有一个使用createComponent
加载多个组件的包装器组件,并且在每个组件中我想附加一个canvas元素。现在我认为有几种方法可以做到这一点,而且无论如何,我都会陷入困境。
第1名
在包装器组件中访问子组件(我无法做到,因为this.cmpRef = this.target.createComponent(factory);
中的nativeElement是私有属性),我需要知道子组件已初始化(所以我会必须使用服务)。
第2名
创建一个指令并将canvas元素放在已加载的组件中:<canvas projectCanvas class="overlay"></canvas>
现在我已经能够通过指令本身访问模板了。 (这很好,但有点重复)。
唯一的事情是在组件的视图初始化之前构造了指令,所以我必须创建一个跟踪组件状态的服务。
实际问题
你会怎么做?在我看来,没有转义服务,或者有没有办法检查视图是否从包装器组件初始化?
---------------更新------------------
尝试制作包含服务的版本,ngAfterViewInit
/ ngOnInit
似乎在createComponent
加载组件时无法工作,请参阅Pliunkr
答案 0 :(得分:0)
你是如何尝试ngAfterViewInit
的?
您是否尝试过像这样在包装器中注入子组件?
@Component({...})
export class WrapperComponent implements AfterViewInit{
@ViewChildren(InnerComponent) innerComponents : QueryList<InnerComponent>;
ngAfterViewInit(){
this.innerComponents.forEach(c => c.doSomething());
}
}