У меня есть родительский и дочерний компонент. Родительский компонент имеет index
и передает его дочернему компоненту как @Input
. Это значение index
постоянно изменяется в родительском компоненте, а внутри моего дочернего компонента я хочу запускать функцию каждый раз, когда изменяется родительский компонент index
. У этого есть компонент слайда, который постоянно меняет его. Как я могу это достичь? Я пробовал с приведенным ниже кодом (this.index.subscribe(() =>
), но я получаю, что это не функция каждый раз, когда я пытаюсь инициализировать подписку.
EDIT: в шаблоне Child
нет соответствующего кода, который может повлиять на него, поэтому он не предоставляется. ngOnChange
, похоже, не работает, поскольку изменение происходит в директиве в отличие от шаблона parent
.
Ребенок:
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();
}
}
Родитель:
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) {
}
}