javascript - 关于 Angular Material 设计的问题 <mat-chip>

标签 javascript typescript angular-material

我的问题是:我有 mat-chip 列表,如果我关闭第一个项目就没问题,如果我关闭最后一个项目,所有项目都关闭了:

enter image description here

这是我的 html:

<mat-form-field>
  <mat-chip-list #chipList>
    <mat-chip *ngFor="let keyword of keywords" [removable]="removable" (removed)="remove(keyword)">
      {{ keyword }}
      <mat-icon matChipRemove>cancel</mat-icon>
    </mat-chip>
    <input placeholder="{{ 'consultantSearchPage.searchForConsultantOrSkills' | translate }}" [matChipInputFor]="chipList" [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
      (matChipInputTokenEnd)="addSearch($event)">
  </mat-chip-list>
</mat-form-field>

这是我的 ts:

remove(keyword): void {
  const index = this.keywords.indexOf(keyword);
  if (index >= 0) {
    this._store.dispatch({ type: UPDATE_KEYWORDS, payload: index});
  }
}

如果我使用:

remove(keyword): void {
  const index = this.keywords.indexOf(keyword);
  if (index >= 0) {
    this.keywords.splice(index, 1);
  }
}

没问题,但我的数据没有更新

这是我的 reducer 代码:

export const UPDATE_KEYWORDS = 'UPDATE_KEYWORDS';
.......
case UPDATE_KEYWORDS:
  console.log( state.keywords.splice(0, 1));
  return Object.assign({}, state, { keywords: state.keywords.splice(action.payload, 1) });

最佳答案

根据您的评论,您正在这样做:

case UPDATE_KEYWORDS:
  console.log( state.keywords.splice(0, 1));
  return Object.assign({}, state, { keywords: state.keywords.splice(action.payload, 1) });

而你应该这样做:

case UPDATE_KEYWORDS:
  state.keywords.splice(action.payload, 1);
  console.log(state.keywords);
  return Object.assign({}, state, { keywords: state.keywords });

你要使用已经拼接好的数组,而不是拼接返回的数组。

https://www.w3schools.com/jsref/jsref_splice.asp

关于javascript - 关于 Angular Material 设计的问题 <mat-chip>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52092224/

相关文章:

javascript - FCKeditor 或 TinyMCE 如何捕获粘贴的图像?

javascript - 十进制计数器 JavaScript

typescript - 如何在 TypeScript 中为此依赖注入(inject)容器声明通用的映射类型

javascript - 找不到模块,您是说 "*js"吗?

angular - 类型 'Observable<{}> is not assignable to type ' 可观察'

angular - 如何在对话框 Angular Material 内对齐按钮?

html - 使用 JSON 数据定义时,所有卡片同时扩展而不是单独扩展

javascript - 不使用 jQuery 在文档上注册事件

javascript/jquery getImageData 图像颜色选择

应用自定义全局字体系列时,Angular mat-icon 不会加载图标