Angular 2:是否可以在动态组件中绑定var?

时间:2016-09-28 11:12:30

标签: angular dynamic data-binding components

我试图在动态组件中绑定一个var,但是当父变量发生变化时,更改不会到达子组件,就像我们将var绑定到固定组件一样:

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

我尝试使用属性实例执行此操作,但它不起作用,它只传递原始值但不传递更改:

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

我创建了一个Plunker示例Example in Plunker

1 个答案:

答案 0 :(得分:0)

也许你可以从一个可观察的&amp;然后在您的组件中订阅它,因此每次更改组件时都会相应地更新值:

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

希望这有帮助。

相关问题