什么时候调用Angular2 ngAfterViewInit?

时间:2016-02-24 23:59:47

标签: javascript jquery typescript angular

我需要一些jQuery代码才能在我的Angular组件视图初始化后将数值转换为星号。

我将代码放在ngAfterViewInit函数中,但它没有按照我的需要进行操作。我在函数中设置了一个断点,我发现在调用ngAfterViewInit函数时,我的组件的大部分HTML都没有加载。未加载的部分使用* ngFor指令生成。

如果此指令生成了我需要操作的所有html后,如何让我的代码运行?

2 个答案:

答案 0 :(得分:22)

当我依赖DOM准备好时,我一直在使用ngAfterViewChecked。

import {Component, AfterViewChecked} from '@angular/core'; 

export class Spreadsheet implements AfterViewChecked{

   ngAfterViewChecked(){

   }
}

答案 1 :(得分:22)

  

什么时候调用ngAfterViewInit?

应在组件视图后调用

ngAfterViewInit(),并创建其子视图。我对此进行了测试,发现孩子的ngAfterViewInit()在父母ngAfterViewInit()之前被调用。

当你说'#34;我的组件的大多数HTML甚至没有加载"时,你是什么意思"加载"? HTML组件的模板中是HTML,还是通过其他方式加载(或生成)?

  

如果此指令生成了我需要操作的所有html后,如何让我的代码运行?

查看指令代码会有所帮助。如果指令以某种方式生成未包含在Angular模板中的HTML,那么您可能需要手动触发事件(例如,使用输出属性)以在呈现完成时通知父级。或者您可以使用setTimeout()(但这不可靠)。

  

我需要一些jQuery代码才能在我的Angular组件视图初始化后将数值转换为星号。

您从哪里获取这些数字值?如果它们是从服务器动态加载的,则可以在数据到达时触发事件,并在此时更新视图。

另外,为什么不编写一个将数字作为输入属性并使用NgFor生成星号的组件?