检查后更改 - Angular [已选择]
Changed after checked - Angular [selected]
我正在为 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 方法,但是 none 解决了问题。
我该如何解决这个问题?
当您选择了多个芯片时会出现此问题。如果你想要多选,你必须在 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>
我正在为 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 方法,但是 none 解决了问题。
我该如何解决这个问题?
当您选择了多个芯片时会出现此问题。如果你想要多选,你必须在 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>