2017-07-15 4 views
1

Ich versuche, Änderungen auf Kind variabler erkennen, aber ngOnChanges Brennen nicht, wenn variable ÄnderungngOnChanges Angular 2 nicht ausgelöst, wenn Tiefe Kind ändert

@Input() _parent: any; 

ngOnChanges(changes: {[propKey: string] : SimpleChange}) { << not fire 
    console.log('Change detected:'); 

    setTimeout(() => { 

    if (!_.isEqual(this._parent.curScript, changes['_parent'].currentValue.curScript)) { 
     console.log(1); 
    } 
    }, 100); 
} 

Was ist mein Problem?

+0

verwenden können, wie die Variable ändern, um eine Eingabeeigenschaft der Kinderkomponente – alehn96

+0

ngOnchange ist nur in der Komponente und Eigenschaft der Komponente für den Wandel, nicht – alehn96

+1

überprüfen dieses https mit Eigentum der Kinder Komponente arbeiten://stackoverflow.com/questions/34796901/angular2-change-detection-ngonchanges-not-firing-for-nested-object?rq=1 – alehn96

Antwort

0

Wie in den Kommentaren erwähnt, erkennt ngOnChanges nur Änderungen an Eingabeeigenschaften, die übergeben werden, wenn die Komponente in die Vorlage einer anderen Komponente eingefügt wird. Die Angular Docs für Lifecycle-Haken sollten aufschlussreich sein https://angular.io/guide/lifecycle-hooks#onchanges

+0

Sorry, ich habe meine Eingabedefinition vergessen, mein _parent war ein Input: ** @ Input() _parent: any; **, aber Änderung geschieht nur beim ersten Mal wie ngOnInit –

0

.Sie können eine Änderung über ChangeDetectorRef erkennen. Sie es so, dass

constructor(private dcr: ChangeDetectorRef) { 
    } 

this.dcr.detectChanges(); // put this line where changes made for example you change `_parent` variable value from parent component you need to put that place. child value changed automatically. does this help 
Verwandte Themen