2016-11-24 110 views
1

我有一个div元素,其中的innerHtml绑定到一个字符串(html)属性。Angular 2 - innerHtml渲染后的事件

<div [effectDirectiveTrigger]="mainContent != null" 
     [innerHtml]="mainContent"></div> 

我试图建立一个指令,“完全呈现其innerHtml div后”消除一些影响“。为此我有一个触发器属性。

@Input('effectDirectiveTrigger') 
trigger:boolean = false; 

ngOnChanges(){ 
    console.log('ngOnChanges'); 
    if (this.trigger){ 
     // fire some effects 
     // seems to happen before the innerHtml has been rendered 
    } 
} 

我的问题是,即使该属性已被触发,innerHtml尚未写入。角似乎需要一些时间。它只有在它设置一个无限超时以允许角度跟上时才有效。

有没有可以绑定的事件?或者你有任何其他/更好的想法来实现我想要做的? jQuery能帮忙吗?

回答

0

innerHTML每次更新mainContent都会更新,并且发生以下更改检测周期。没有事件。您可以在mainContent更新后自行发出事件。如果您使用cdRef.detectChanges()自己调用变更检测,那么现在就渲染它。

0
+0

已经尝试'ngAfterViewInit'。它发生在最后一个'ngOnChanges'之前,甚至在异步**加载** mainContent **之前。 – Philipp

+0

'ngAfterViewInit'是一个只有_component的hook_这可能是它对我的情况没有帮助的原因。 – Philipp

+0

是否有可能提供一个猛击者呢? –