我有一个复选框:
<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;
}
});
。复选框中的r
是this.question.personaSelection
中的对象。复选框位于*ngFor
中。在用户尝试取消选择之前,该小功能会将所有复选框重置为其值。
调试时,我可以验证所有内容的question.personaSelection
selected
属性是否正确,但该复选框未被设置回检查状态。
我错过了什么?我也尝试在复选框上使用[checked]="r.selected"
,但这不起作用,我尝试将ChangeDetectionStrategy设置为OnPush并在更改x.selected
后手动检测更改。