我试图在动态组件中绑定一个var,但是当父变量发生变化时,更改不会到达子组件,就像我们将var绑定到固定组件一样:
<child-component [myVar]="myVar"><child-component>
我尝试使用属性实例执行此操作,但它不起作用,它只传递原始值但不传递更改:
this.componentRef.instance.myVar = this.myVar;
我创建了一个Plunker示例Example in Plunker。
答案 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;
});
}
希望这有帮助。