ngOnInit или ngOnChanges не вызывается при ручном вызове changeDetect () для компонента - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть 3 компонента, из которых p1 является родительским, а c1 и c2 дочерним,

в c2 я запускаю обнаружение изменений, вызывая

this.changeDetecionRef.detectChanges ()

Но это не сработает. функция ngOnChanges или ngOnInit не вызывается из родительского и дочернего компонента.

Нужно ли обновлять какое-либо свойство, т. Е. Привязывать данные от родителя к ребенку или от ребенка к родителю.

1 Ответ

0 голосов
/ 11 сентября 2018

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;
}

метод detechanges () должен вызываться после обновления свойства, например,

 export class ParentComponent{
    Counter=2;

    changeCount(){
        this.Counter++;
        this.changeDetecionRef.detectChanges();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...