2016-09-28 3 views
0

동적 구성 요소에서 var를 바인딩하려하지만이 var가 부모에서 변경되면 다음과 같이 고정 된 구성 요소에 var를 바인드 할 때 변경 사항이 하위 구성 요소에 도착하지 않습니다.각도 2 : 동적 구성 요소에 var를 바인딩 할 수 있습니까?

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

나는 다음과 같은 속성 인스턴스를 사용하여 할 노력하고있어,하지만이 작동하지 않습니다, 그것은 단지 원래의 값을 전달하지만 아니에요 변경 : 나는 Plunker을 만들었습니다

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

예 : Example in Plunker. 루트 수준에서이 서비스를 주입 한 후 다음

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

:

+0

변경 사항도 전달해야합니다. 동적 구성 요소가 구독 할 수있는 관찰 가능 항목을 전달하여 변경 사항에 대한 알림을받을 수 있습니다. –

+0

수동 업데이트를 처리 할 수 ​​있다면'changeSelection' 메소드의 끝에'this.componentRef.instance.selection = this.selection; '을 넣으십시오. – lbrahim

+0

감사합니다 @Ibrahim, 예를 들어 작동하지만 다른 구성 요소에서 var가 변경 될 수 있으므로 그렇게 할 수 없습니다. – ChristianGH

답변

0

아마도 당신은 따라서 매번 당신의 구성 요소가 따라 값을 업데이트합니다 변경 다음 구성 요소에 가입 관찰 &에서 스트림을 만들 수 구성 요소 내부에서 다음 스트림으로 구독 할 수 있습니다.

public leftVisible: boolean; 
subscriptionLeftVisible: Subscription; 
ngOnInit() {  
    this.subscriptionLeftVisible = this._viewToggleService.leftVisibleStream$.subscribe(leftVisible => { 
     this.leftVisible = leftVisible; 
    }); 
} 

희망이 있습니다.

관련 문제