了解ngOnChanges lifecyle hook

时间:2016-08-08 04:06:16

标签: angular

以下是对OnChanges生命周期事件的解释 angular2文档。

ngOnChanges - 在ngOnInit之前和数据绑定的输入属性值之前 变化。

以下是我的示例组件代码

@Component({
   selector:'app-main',
   template:`
      <user-form>Loading....</user-form>
   `,
   directives: [userFormComponent],
   providers: [HTTP_PROVIDERS,UserService]
})

export class AppComponent implements OnInit , OnChanges {

  @Input()
  public prop: string = "hi!";

  ngOnInit() {
     console.log('ngOnInt') ;
  }

  ngOnChanges() {
     console.log('ngOnChanges') ;
  }  

}

我在这个html页面中引用了这个组件

<app-main [prop]="test">Loading...</app-main>

现在我的问题是,即使我正在改变数据绑定输入属性&#34; prop&#34;通过  分配值&#34; test&#34;,为什么不执行ngOnChanges。顺便说一句,我是angular2的新手。

1 个答案:

答案 0 :(得分:1)

问题是这不适用于主要组件/根组件。

  

这不起作用的原因是您放置的index.html不是角度组件。因此,Angular不会编译这个元素。并且Angular在运行时不会读取属性值,只是在编译期间,否则,我们会受到性能影响。

出于这个原因,ngOnChanges挂钩方法不适用。

看到这个问题: