1
變化我有兩個組成部分,一個父母和孩子:使用觀測量傳播在角2
// Parent Directive
@Component({
selector: 'parent-directive',
template: `
<button (click)="nextVal($event)"></button>
<button (click)="prevVal($event)"></button>
<child-directive [content]="myValue"></child-directive>`,
directives: [ChildDirective]
})
export class ParentDirective {
public myValue : string;
constructor() {this.myValue = "Hello";}
nextVal() {this.myValue = "Next";}
prevVal() {this.myValue = "Prev";}
}
這是孩子的指令:
// Child directive
type ObservableContent = Observable<string>;
@Component({
selector: 'child-directive',
template: `<div></div>`
})
export class ChildDirective {
@Input() content : ObservableContent;
subscription : Subscription;
constructor() {
// I instantiate the content property as an observer. I want to see if it logs anything.
this.content = new Observable<string>(ob => {console.log('constructor', ob)});
// I'm trying to get the propagated values here.
this.subscription = this.content.subscribe(value => { console.log('value', value);});
}
}
讓我打破我是什麼試圖在這裏做。我有一個嵌套在父組件中的子組件。父級有兩個按鈕,next
和prev
,單擊時會更改綁定到父級範圍的屬性。
孩子有另一個屬性,content
綁定到父級的myValue
作用域屬性。當我在父母更新myValue
時,我希望孩子的content
屬性發生變化。但是,當我嘗試訂閱該值時,訂閱偵聽器永遠不會被調用。我究竟做錯了什麼?
我認爲我們正在尋找捕捉「內容」值發生變化的時刻,但不僅僅是將其輸出到模板中。爲了在模板中輸出,你不需要任何'Observable'事物。 –
我不需要將'content'值寫入模板。我需要捕獲它作爲「子」組件的屬性。 – dopatraman
@AndreiZhytkevich我已經更新了答案:) – ritz078