javascript - mat-chip 的(单击)中的 ExpressionChangedAfterItHasBeenCheckedError

标签 javascript angular

尝试为 mat-chip 的点击事件设置值时,出现 ExpressionChangedAfterItHasBeenCheckedError

我创建了一个 stackblitz 来查看操作中的错误(打开控制台然后单击两个或更多芯片):https://stackblitz.com/edit/angular-ddapw1?file=app/chips-stacked-example.html

// index.html
<mat-chip-list>
  <mat-chip
      *ngFor="let chip of availableItems; index as idx"
      [selected]="selectedItems.indexOf(idx) > -1"
      (click)="select(idx)">
    {{chip}}
  </mat-chip>
</mat-chip-list>

// index.js
import {Component, ChangeDetectorRef} from '@angular/core';

@Component({
  selector: 'chips-stacked-example',
  templateUrl: 'chips-stacked-example.html',
  styleUrls: ['chips-stacked-example.css'],
})
export class ChipsStackedExample {
  constructor(private cdr: ChangeDetectorRef) {}
  availableItems = ['foo', 'bar', 'baz'];
  selectedItems = [];
  select(idx) {
    console.log('selecting', idx);
    this.selectedItems.push(idx);
    //this.cdr.detectChanges()
  }
}

最佳答案

您忘记添加 multiple 属性:

<mat-chip-list multiple>

关于javascript - mat-chip 的(单击)中的 ExpressionChangedAfterItHasBeenCheckedError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51957743/

相关文章:

javascript - Tampermonkey 脚本仅在页面刷新后有效

javascript - 图像和视频 slider 自动播放

javascript - 准备好加入语音 channel (discord.js)

angular - 如何在 Angular 2 中保留存储在给定服务实例的引用变量中的值?

Angular 9 Router - CanActivate 不适用于重定向

Angular 6 - 对所有表列进行排序仅适用于两列而不是所有列

javascript - console.log 在 Angular Controller 中不起作用

php - 如何使用 Javascript 或 PHP 存储 Accordion 菜单的状态(打开或关闭)

angular - 使用 karma jasmine 模拟 angular2 中单元测试的 keyup.space 事件

angular - @angular/core/testing 没有导出成员 'MockApplicationRef'