J'ai un parent et son enfant composant. Composant Parent a index
et passe à l'enfant composant comme un @Input
. Cette index
de la valeur change constamment dans le composant parent, et à l'intérieur de mon composant enfant, je veux exécuter une fonction à chaque fois que le composant Parent change index
. Cela a une diapositive composant qui change constamment d'elle. Comment puis-je y parvenir? J'ai essayé avec le code ci-dessous (this.index.subscribe(() =>
), mais je suis arriver que ce n'est pas une fonction à chaque fois que j'essaie et initialiser l'abonnement.
EDIT: Il n'y a pas de code lié à l' Child
modèle qui pourrait avoir un impact, de sorte qu'il n'est pas fourni. ngOnChange
ne semble pas fonctionner, car le changement qui se passe dans la directive, par opposition à l' parent
s'modèle.
Enfant:
import {Component, OnInit, ViewChild, Input} from '@angular/core';
import {Observable} from 'rxjs/Observable';
@Component({
selector: "child",
templateUrl: "components/child/child.html",
})
export class ChildComponent implements OnInit {
@Input() index: string;
currentIndex: any;
constructor() {}
ngOnInit() {}
ngOnChanges(){}
ngAfterViewInit() {
console.log("index " + this.index);
this.currentIndex = this.index.subscribe(() => {
console.log("index " + this.index);
})
}
ngOnDestroy() {
this.currentIndex.unsubscribe();
}
}
Parent:
import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
import {Page} from "ui/page";
import {ChildComponent} from '/components/child/child.component'
@Component({
selector: "parent",
template: "<child [index]="index"></child>",
directives: [ChildComponent]
})
export class ParentComponent implements OnInit {
index: string = "0,1";
constructor(private page: Page) {
}
}