Javascript 问题<;mat芯片>;论角材料设计

Javascript 问题<;mat芯片>;论角材料设计,javascript,typescript,angular-material,Javascript,Typescript,Angular Material,我的问题是:我有一个mat芯片列表,如果我关闭第一个项目就可以了,如果我关闭最后一个项目,所有项目都关闭了: 这是我的html: <mat-form-field> <mat-chip-list #chipList> <mat-chip *ngFor="let keyword of keywords" [removable]="removable" (removed)="remove(keyword)"> {{ keyword }}

我的问题是:我有一个mat芯片列表,如果我关闭第一个项目就可以了,如果我关闭最后一个项目,所有项目都关闭了:

这是我的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>
如果我使用:

remove(关键字):void{
常量索引=this.keywords.indexOf(关键字);
如果(索引>=0){
这个.关键词.剪接(索引,1);
}
}
没关系,但我的数据没有更新

这是我的代码:

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 });
您希望使用已拼接的阵列,而不是拼接返回的阵列


您能否向我们展示处理更新关键字操作的减缩器或效果中的代码?导出常量更新关键字='更新关键字'。。。。。。。案例更新_关键字:console.log(state.KEYWORDS.splice(0,1));返回Object.assign({},state,{keywords:state.keywords.splice(action.payload,1)});有一个更改,但它只删除了before项,而不是item@BrunoMarcelino这很奇怪:-)如果
有效负载
的索引值正确,应该可以了。非常感谢,现在就可以了