什么时候调用Angular2 ngAfterViewInit?

Gab*_*ary 26 javascript jquery typescript angular

在我的Angular组件视图初始化为将数值转换为星形后,我需要运行一些jQuery代码.

我把代码放在ngAfterViewInit函数中,但它没有做我需要的东西.我在函数中设置了一个断点,我发现在调用ngAfterViewInit函数时,我的组件的大部分HTML都没有加载.未加载的部分使用*ngFor指令生成.

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

TGH*_*TGH 25

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

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

export class Spreadsheet implements AfterViewChecked{

   ngAfterViewChecked(){

   }
}
Run Code Online (Sandbox Code Playgroud)

  • 请记住,`ngAfterViewChecked`可以被多次调用. (20认同)

Mar*_*cok 22

什么时候调用ngAfterViewInit?

ngAfterViewInit()应在组件视图之后调用,并创建其子视图.我对此进行了测试,发现孩子们ngAfterViewInit()在父母的面前被召唤ngAfterViewInit().

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

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

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

在我的Angular组件视图初始化为将数值转换为星形后,我需要运行一些jQuery代码.

你从哪里得到这些数值?如果它们是从服务器动态加载的,则可以在数据到达时触发事件,并在该点更新视图.

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