Primeng,使用按钮动态取消选中复选框
Primeng, dynamically uncheck p-checkbox with pButton
我最初发现这个问题,和我的情况非常相似:
how to uncheck/check a primeng checkbox manually
这是一个 StackBlitz,它显示了我的问题:
https://stackblitz.com/edit/angular-primeng-p-checkbox-issue-6xjv8b?file=app/app.component.ts
基本上,我正在遍历任意长度的数据并将其显示在 table。
其中一列只有一个带有(on Change)的p-Checkbox,当检查和未选中时,它会传递一些参数,以便我跟踪数组中。
然后我尝试通过单击按钮取消选中所有 p 复选框。
我发现另一个 question/solution 提到了使用 @ViewChildren、ElementRef、QueryList,但在试图弄清楚“nativeElement.checked”是什么时遇到了问题。
和其他 questions/solutions 我发现涉及事先知道复选框的长度,并通过数组使用 *ngFor 来显示正确数量的复选框。我尝试在我的设置中使用类似的逻辑,但也无法正常工作。
为什么不在模板中使用 [(ngModel)]="arrayOfChecked"
?
并且在按钮 (click)
事件处理程序中,数组引用需要更改为新的空数组,因为如果对象引用相同(即在 [=12 之后),则不会触发组件更改检测=] 或 push()
).
这是一个基于您的 StackBlitz 示例的解决方案。
https://stackblitz.com/edit/angular-primeng-p-checkbox-issue-6euntp?file=app/app.component.ts
您可以简单地控制模型中的复选框
tableData: { id: number; name: string; isChecked?: boolean }[] = [
{ id: 1, name: 'first' },
{ id: 2, name: 'second' },
{ id: 3, name: 'third' },
];
然后将 ngModel 添加到 html
<tr>
<td>{{ tdata.id }}</td>
<td>{{ tdata.name }}</td>
<td colspan="2">
<p-checkbox
#checkboxes
[(ngModel)]="tdata.isChecked"
binary="true"
inputId="binary"
(onChange)="changeCheckmark($event, tdata.id, tdata.name)"
></p-checkbox>
</td>
</tr>
并重置状态
clickButton() {
this.tableData.filter(z => z).forEach((x) => (x.isChecked = false));
}
我最初发现这个问题,和我的情况非常相似:
how to uncheck/check a primeng checkbox manually
这是一个 StackBlitz,它显示了我的问题:
https://stackblitz.com/edit/angular-primeng-p-checkbox-issue-6xjv8b?file=app/app.component.ts
基本上,我正在遍历任意长度的数据并将其显示在 table。
其中一列只有一个带有(on Change)的p-Checkbox,当检查和未选中时,它会传递一些参数,以便我跟踪数组中。
然后我尝试通过单击按钮取消选中所有 p 复选框。
我发现另一个 question/solution 提到了使用 @ViewChildren、ElementRef、QueryList,但在试图弄清楚“nativeElement.checked”是什么时遇到了问题。
和其他 questions/solutions 我发现涉及事先知道复选框的长度,并通过数组使用 *ngFor 来显示正确数量的复选框。我尝试在我的设置中使用类似的逻辑,但也无法正常工作。
为什么不在模板中使用 [(ngModel)]="arrayOfChecked"
?
并且在按钮 (click)
事件处理程序中,数组引用需要更改为新的空数组,因为如果对象引用相同(即在 [=12 之后),则不会触发组件更改检测=] 或 push()
).
这是一个基于您的 StackBlitz 示例的解决方案。
https://stackblitz.com/edit/angular-primeng-p-checkbox-issue-6euntp?file=app/app.component.ts
您可以简单地控制模型中的复选框
tableData: { id: number; name: string; isChecked?: boolean }[] = [
{ id: 1, name: 'first' },
{ id: 2, name: 'second' },
{ id: 3, name: 'third' },
];
然后将 ngModel 添加到 html
<tr>
<td>{{ tdata.id }}</td>
<td>{{ tdata.name }}</td>
<td colspan="2">
<p-checkbox
#checkboxes
[(ngModel)]="tdata.isChecked"
binary="true"
inputId="binary"
(onChange)="changeCheckmark($event, tdata.id, tdata.name)"
></p-checkbox>
</td>
</tr>
并重置状态
clickButton() {
this.tableData.filter(z => z).forEach((x) => (x.isChecked = false));
}