当值更改时,Angular2复选框不会更新

时间:2017-04-21 15:25:46

标签: javascript angular angular2-changedetection

我有一个复选框:

<input [name]="persona" type="checkbox" [value]="r.id" (ngModelChange)="updateSingleId(r)" [(ngModel)]="r.selected" (change)="deselectLast()"  />

在ngModelChange中,当用户尝试取消选择时,我们会弹出一个ng2-bootstrap模式并询问用户是否确定要取消选择。如果他们拒绝,我们想重新选中该复选框。

在使用javascript confirm()完成此操作之前,我可以将事件传递给函数并将stopPropogation传递给它,但是ng2-bootstrap的模态不能像那样工作。

所以无论如何,如果用户点击“否”,我会在该对象上将选定设置回“true”:

this.question.personaSelection.forEach(x => {
    if (this.previousSelection.filter(y => y === x.id).length > 0) {
        x.selected = true;
    } else {
        x.selected = false;
    }
});

。复选框中的rthis.question.personaSelection中的对象。复选框位于*ngFor中。在用户尝试取消选择之前,该小功能会将所有复选框重置为其值。

调试时,我可以验证所有内容的question.personaSelection selected属性是否正确,但该复选框未被设置回检查状态。

我错过了什么?我也尝试在复选框上使用[checked]="r.selected",但这不起作用,我尝试将ChangeDetectionStrategy设置为OnPush并在更改x.selected后手动检测更改。

0 个答案:

没有答案