angular - 检查后更改 - Angular [已选择]

标签 angular select foreach inotifypropertychanged checked

我在 Angular 中为标签使用 Material 芯片,它们由 *ngFor 循环。

<mat-chip class="c-pointer" *ngFor="let popularTag of popularTags; let i=index" [selected]="popularTag.is_user_tag" (click)="toggleTag(i)">#{{ popularTag.title }}</mat-chip>

我需要在芯片点击时切换“is_user_tag”值,但它会抛出错误

ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'mat-chip-selected: true'. Current value: 'mat-chip-selected: false'

我尝试了 setTimeout() 和 ChangeDetectorRef 方法,但都没有解决问题。

我该如何解决这个问题?

最佳答案

当您选择了多个芯片时,就会出现此问题。如果你想要多选,你必须在 mat-chip-list

上设置 [multiple]="true"
<mat-chip-list [multiple]="true">
    <mat-chip class="c-pointer" *ngFor="let popularTag of popularTags; let i=index" [selected]="popularTag.is_user_tag" (click)="toggleTag(i)">#{{ popularTag.title }}</mat-chip>
</mat-chip-list>

演示:https://stackblitz.com/edit/angular-x7tkwc

关于angular - 检查后更改 - Angular [已选择],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51441963/

相关文章:

php - 如何在 php foreach 循环中保持运行总计

php - 获取数组的最后一个元素以从中删除逗号

javascript - AngularJs 自定义过滤器在我的情况下不起作用

angular - 如何从 VS Code 调试 Angular 6 子项目

Angular NgZone.runOutsideAngular 和 OnPush 变化检测策略

mysql - 教义 - 不等于某个值

sql - 甲骨文 SQL : Updating a column with SUM query of another table

javascript - 检查子组件的属性

MySQL 从多个表中选择 WHERE 比较为 NULL 给出前一行的值

c# - 对于迭代器方法中的每个循环