在Angular组件的DOM更改后运行函数,类似于ngAfterViewInit

时间:2018-10-09 07:08:52

标签: angular typescript

我有一个基于输入实例化一堆指令的组件。在下面的示例中(不是真正的代码,但是尽我所能说明问题),该组件的配置为Input(),使用MyService将其转换为{{1 }},然后this.fields指令在组件中呈现实际字段。 指令渲染完所有字段后,我想dynamicField。我使用doSomething()实现了这一点,效果很好。

现在是问题:稍后,我想触发对ngAfterViewInit()的更改,因为某些组件已删除,而另一些组件已从该组件添加。但是,在再次渲染所有指令之后,如何再次运行doSomething()? this.fields在这种情况下不会被触发。

ngAfterViewinit()

2 个答案:

答案 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();
     }

}