1
我收到了意外的复选框行为。发生初始点击时出现奇怪的md-checkbox行为
当我最初点击我的复选框时,我得到了Facility对象的check()
函数,并且this.check
是FALSE,就像它应该是。我的切换语句!this.checked
正常工作,newState分配的值为TRUE。 在下一行中,将该TRUE值分配给this.checked
,我看到波纹,但不显示任何检查。
当我随后点击此复选框时,我再次进入Facility对象的check()函数,尽管复选框未被选中,但this.check值为TRUE。 我的toggle语句再次起作用,并且newState的值为FALSE,并且this.checked现在为FALSE。奇怪的是,在此之后,检查出现。
这是怎么回事?
父树节点类
export class TreeNode {
id: string;
name: string;
checked: boolean;
constructor(id: string, name: string) {
this.id = id;
this.name = name;
this.checked = false;
}
}
儿童设施类
import { TreeNode } from './tree-node';
export class Facility extends TreeNode {
constructor(id: string, name: string) {
super(id, name);
}
check() {
console.log('Facility Check: facility = '+ this.name);
let newState = !this.checked;
this.checked = newState;;
}
}
HTML,超过一个设施阵列迭代
<div *ngFor="let facility of facilities" >
<md-checkbox [checked]="facility.checked" (click)="facility.check()">
{{facility.name}}</md-checkbox>
</div>
这是一个共同的解决办法:
此外,如果你想要的响应变化做的是保持布尔你可以用双向数据通过ngModel绑定,如下办呢?我明天会试一试。感谢您的答复。 –
我想说的是,更多的解决方法是处理md-checkbox选中状态更改的方式。我已经编辑了答案,使用ngModel添加一个选项,以防因维护该布尔值之外的原因而不需要响应更改事件。 –
工作。谢谢弗雷迪。 –