我正在使用Angular Material
中的mat-checkbox
,我已经添加了change
事件,如下所示…
<div *ngFor="let subscriber of selectedSubscribers">
<mat-checkbox (change)="onSubscriberCheck(subscriber)">
{{ subscriber.name }}
</mat-checkbox>
</div>
代码onSubscriberCheck(subscriber)
如下所示:
onSubscriberCheck(subscriber: Subscribers) {
if (subscriber.checked) {
//Do Something
} else {
//Do Something else
}
}
在这里点击复选框,我总是得到subscriber.checked
作为undefined
的值.
我的预期结果是,如果选中它,则值应该是true
而不是undefined
.如果未选中,则该值应为false
,而不是undefined
.
EDIT个
如果我添加[(ngModel)]
,则复选框列表不能正常工作.让我添加完整的场景...
我有两套复选框列表.其中一个是一组包含checked
个复选框的列表,在另一个列表下面,我将显示一组包含unchecked
个复选框的列表.因此,在onSubscriberCheck(subscriber)
事件中,Do Something
如下所示.
onSubscriberCheck(subscriber: Subscribers) {
if (subscriber.checked) {
this.selectedSubscribers.push(subscriber);
this.unselectedSubscribers = this.unselectedSubscribers.filter(s => s.id !== subscriber.id);
} else {
this.unselectedSubscribers.push(subscriber);
this.selectedSubscribers = this.selectedSubscribers.filter(s => s.id !== subscriber.id);
}
}
所以,在这里,[(ngModel)] = subscriber.checked
和change
事件都会触发.如何克服这一点?
我只想在列表顶部显示选中的复选框,在底部显示未选中的复选框.因此,在发生更改事件时,我正在重新排列数组selectedSubscribers
和unselectedSubscribers
SECOND EDIT个
我正在使用以下函数来填充订阅者
GetSelectedSubscribers() {
this.selectedSubscribers = this.allSubscribers
.filter(subscriber => subscriber.id !== undefined)
.map(subscriber => ({ id: subscriber.id, name: subscriber.name, checked: subscriber.checked }));
}
GetUnselectedSubscribers(){
this.unselectedSubscriberGroupItems = this.subtractListIds(this.allSubscriberGroupItems, this.selectedSubscriberGroupItems);
this.unselectedSubscribers = this.unselectedSubscriberGroupItems.lists.map(subscriber => ({ id: subscriber.id, name: subscriber.name, checked: subscriber.checked }));
}
在这里,最后一个复选框名称为空,但具有复选框控件.不知道为什么它不显示..
请澄清...