Angular2指令等待组件初始化

时间:2017-01-12 11:33:48

标签: javascript angular canvas components

我有一个使用createComponent加载多个组件的包装器组件,并且在每个组件中我想附加一个canvas元素。现在我认为有几种方法可以做到这一点,而且无论如何,我都会陷入困境。

第1名

在包装器组件中访问子组件(我无法做到,因为this.cmpRef = this.target.createComponent(factory);中的nativeElement是私有属性),我需要知道子组件已初始化(所以我会必须使用服务)。

第2名

创建一个指令并将canvas元素放在已加载的组件中:<canvas projectCanvas class="overlay"></canvas>现在我已经能够通过指令本身访问模板了。 (这很好,但有点重复)。

唯一的事情是在组件的视图初始化之前构造了指令,所以我必须创建一个跟踪组件状态的服务。

实际问题

你会怎么做?在我看来,没有转义服务,或者有没有办法检查视图是否从包装器组件初始化?

---------------更新------------------

尝试制作包含服务的版本,ngAfterViewInit / ngOnInit似乎在createComponent加载组件时无法工作,请参阅Pliunkr

1 个答案:

答案 0 :(得分:0)

你是如何尝试ngAfterViewInit的?

您是否尝试过像这样在包装器中注入子组件?

@Component({...})
export class WrapperComponent implements AfterViewInit{

  @ViewChildren(InnerComponent) innerComponents : QueryList<InnerComponent>;

   ngAfterViewInit(){
     this.innerComponents.forEach(c => c.doSomething());
   }

}