2016-09-28 2 views
0

私は動的コンポーネントでvarをバインドしようとしていますが、このvarが親で変更された場合、varを固定コンポーネントにバインドしたときのように、子コンポーネントに変更が届きません。角2:動的コンポーネントにvarをバインドすることは可能ですか?

<child-component [myVar]="myVar"><child-component> 

私は次のようにプロパティのインスタンスを使用して、それをやろうとしているが、それは動作しません、それだけで元の値を渡しますがいない変更:私はPlunkerを作成しました

this.componentRef.instance.myVar = this.myVar; 

例:Example in Plunker

+0

変更を渡す必要があります。ダイナミックコンポーネントを購読可能な場所に観測値を渡して、変更を通知することができます。 –

+0

もしあなたが手動でアップデートすることができるならば、 'changeSelection'メソッドの最後に' this.componentRef.instance.selection = this.selection; 'を入れてください。 – lbrahim

+0

ありがとう@Ibrahim、この例では動作しますが、varが他のコンポーネントで変更されることがあるので、私はそれを行うことはできません。 – ChristianGH

答えて

0

おそらくあなたは、あなたのコンポーネントでそれを購読する観測可能&からのストリームを作ることができ、これ毎回それはあなたのコンポーネントがそれに応じて値を更新します変更:

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; 
    }); 
} 

希望します。

関連する問題