以下是对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的新手。
答案 0 :(得分:1)
问题是这不适用于主要组件/根组件。
这不起作用的原因是您放置的index.html不是角度组件。因此,Angular不会编译这个元素。并且Angular在运行时不会读取属性值,只是在编译期间,否则,我们会受到性能影响。
出于这个原因,ngOnChanges
挂钩方法不适用。
看到这个问题: