在组件上手动调用changeDetect()时未调用ngOnInit或ngOnChanges

时间:2018-09-11 09:45:54

标签: angular5

我有3个成分,其中p1是父级,c1和c2是子级,

在c2中,我通过调用

触发更改检测
  

this.changeDetecionRef.detectChanges()

但这不会触发。父组件和子组件不会调用ngOnChanges或ngOnInit函数。

我是否需要更新任何属性,即将数据从父级绑定到子级或将子级绑定到父级。

1 个答案:

答案 0 :(得分:0)

仅当更改数据绑定属性时才调用

ngOnChanges。 解析所有注入的依赖项后,将调用ngOnInit()。 (它应在ngOnChanges()之后调用)

将数据从父组件绑定到子组件

parent.component.ts

  @Component({
selector:'parent-component',
template:`
    <h1>Welcome</h1>
    <button (click)="changeCount()">Change</button>
    <child-component [count]=Counter></child-component>`,
})

export class ParentComponent{
    Counter=2;

    changeCount(){
        this.Counter++;
    }
}

child.component.ts

    @Component({
    selector:'child-component',
    template:`<h2>Total Count {{count}}</h2>`
})

export class ChildComponent{
    @Input() count:number;
}
在更新属性后,应调用

detectchanges()方法, 例如,

 export class ParentComponent{
    Counter=2;

    changeCount(){
        this.Counter++;
        this.changeDetecionRef.detectChanges();
    }
}