gpt4 book ai didi

javascript - 关于 Angular Material 设计的问题

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:34 24 4
gpt4 key购买 nike

我的问题是:我有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com