也許你可以從觀察到的&使流然後訂閱它在你的組件,因此每次它改變了你的組件將更新相應的值:在你的根級別注入該服務後
import { Injectable } from '@angular/core';
import {Subject} from 'rxjs/Subject';
@Injectable()
export class ViewToggleService {
leftVisible:boolean=true;
// Observable boolean source
private leftVisibleSource = new Subject<boolean>();
// Observable boolean stream
leftVisibleStream$=this.leftVisibleSource.asObservable();
constructor(){
}
// service command
toggleView(viewName:string){
if(viewName.toString()==='leftVisible'){
this.leftVisible=!this.leftVisible;
this.leftVisibleSource.next(this.leftVisible);
}
}
}
然後,在你的組件內,你可以訂閱這個流如下:
public leftVisible: boolean;
subscriptionLeftVisible: Subscription;
ngOnInit() {
this.subscriptionLeftVisible = this._viewToggleService.leftVisibleStream$.subscribe(leftVisible => {
this.leftVisible = leftVisible;
});
}
希望這會有所幫助。
您還必須通過更改。您可以傳遞動態組件可以訂閱的觀察值,以獲取有關更改的通知。 –
如果你可以解決手動更新問題,那麼把'this.componentRef.instance.selection = this.selection;'放在'changeSelection'方法的末尾。 – lbrahim
謝謝@Ibrahim,在這個例子中它可以工作,但有時var其他組件的變化,所以我不能這樣做。 – ChristianGH