Kli*_*ent 4 rxjs angular2-template angular
我有一个组件,它作为对象的输入数组,应该过滤并显示在模板中.
@Input() inputAddons: Array<InputAddon>;
addOns: Observable<InputAddon>;
lblLeftAddons: Observable<InputAddon>;
Run Code Online (Sandbox Code Playgroud)
班上的定义如上.
ngOnInit(): void {
this.addOns = Observable.from(this.inputAddons);
this.lblLeftAddons = this.addOns.filter(function (x){
return x.pos == 'left' && x.type == 'label'}
);
this.lblLeftAddons.subscribe(x => console.log(x));
}
Run Code Online (Sandbox Code Playgroud)
这是我过滤数组的代码
在模板中我有这个代码
*ngFor="#addon of lblLeftAddons | async"
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我得到例外
Cannot find a differ supporting object '[object Object]' in [lblLeftAddons | async in InputText@14:10]
Run Code Online (Sandbox Code Playgroud)
我有什么想法吗?
我解决了它,对我的代码进行了一些修改.首先我换了
lblLeftAddons: Observable<InputAddon>;
Run Code Online (Sandbox Code Playgroud)
同
lblLeftAddons: Observable<InputAddon[]>;
Run Code Online (Sandbox Code Playgroud)
Observable必须返回数组才能使ngFor工作.
我修改了addon observable来返回数组
this.lblLeftAddons = this.addOns.filter(function (x){
return x.pos == 'left' && x.type == 'label'}
);
Run Code Online (Sandbox Code Playgroud)
我changeDetection: ChangeDetectionStrategy.OnPush也在我的组件定义中添加了
| 归档时间: |
|
| 查看次数: |
3356 次 |
| 最近记录: |