我有一个基于输入实例化一堆指令的组件。在下面的示例中(不是真正的代码,但是尽我所能说明问题),该组件的配置为Input()
,使用MyService
将其转换为{{1 }},然后this.fields
指令在组件中呈现实际字段。
指令渲染完所有字段后,我想dynamicField
。我使用doSomething()
实现了这一点,效果很好。
现在是问题:稍后,我想触发对ngAfterViewInit()
的更改,因为某些组件已删除,而另一些组件已从该组件添加。但是,在再次渲染所有指令之后,如何再次运行doSomething()? this.fields
在这种情况下不会被触发。
ngAfterViewinit()
答案 0 :(得分:1)
使用setTimeout将执行延迟到下一个刻度可能有效:
myTrigger(){
this.fields.pop();
this.fields.push({'id': 'someotherfield', 'label':'someotherfield'})
setTimeout(() => {
this.doSomething()
})
}
答案 1 :(得分:1)
尝试一下:
import { Component, AfterViewChecked, OnInit} from '@angular/core';
export class MyComponent implements AfterViewChecked, OnInit{
ngAfterViewChecked(){
doSomething();
}
}