【发布时间】:2019-02-24 19:23:42
【问题描述】:
我想将 isSelected 绑定到包装在可观察对象中的对象。我一个人尝试(没有可观察的并且有效)。 但是,在我的组件中,measure.isSelected 始终返回 false,即使选中了复选框。
<tr *ngFor="let measure of criteriaSelectedMeasures$ | async ; let i = index">
<td>{{measure.type}}</td>
<td>{{measure.equipment}}</td>
<td>{{measure.axis}}</td>
<td>{{measure.direction}}</td>
<td>{{measure.pr}}</td>
<td>{{measure.section}}</td>
<td>{{measure.agregation}}</td>
<td>{{measure.measureType}}</td>
<td>{{measure.qualification}}</td>
<td>
<p-checkbox name="criteria-measure-{{i}}" binary="true" [(ngModel)]="measure.isSelected"></p-checkbox>
</td>
</tr>
在我的组件内部:
this.criteriaSelectedMeasures$.subscribe(list => {
this.store.dispatch(new AddMeasureDefinitionsAction(list.filter(m => m.isSelected))); <-- here isSelected is always false
});
对我来说,两种方式的绑定在这里不起作用,因为异步管道或订阅 observable 会创建具有另一个引用的不同对象。
我说的对吗?还有另一种方法可以实现这一目标吗? (也许使用 ngModelChange ?)
【问题讨论】:
-
告诉我一件事,您想过滤该列表以仅包含
isSelected等于true的那些对象,对吗? -
它在没有观察到的情况下工作,因为引用是相同的。订阅返回新的对象集合。两种方式的数据绑定不会绑定它。
标签: angular typescript rxjs observable