angular - 在 Angular-ngrx 应用程序中,页面刷新后图标会改变颜色,而不仅仅是点击后
问题描述
当用户单击它并将完成的字段更新为 true 并设置日期时,我正在尝试将 mat-icon 的颜色从灰色更改为绿色。在后台请求中正常工作的一切都将转到服务,并且状态会在按钮单击时更新,但是在 UI 中,当我刷新页面时,更改会反映出来。我在哪里做错了?
`html`
<div class="reading-list-item" *ngFor="let b of readingList$ | async">
<button
id="markAsFinish"
class="tooltip"
[attr.aria-label]="'Finish Reading'"
mat-icon-button
[style.color]="b.finished ? '#62c926' : 'grey'"
(click)="finishReading(b, b.bookId)"
>
<mat-icon>{{ b.finished ? 'assignment_turned_in' : 'assignment_late' }}</mat-icon>
<span class="tooltiptext">Finished Reading</span>
</button>
`component.ts`
finishReading(item, id){
this.store.dispatch(markBookAsFininshed({ item }))
}
export const markBookAsFininshed = createAction(
'[Books Search Results] Mark as finished after reading',
props<{ item: ReadingListItem }>()
);
on(ReadingListActions.markBookAsFininshed, (state, action) =>
readingListAdapter.updateOne({ id: action.item.bookId, changes: action.item }, state)
),
updateFinishDate$ = createEffect(() =>
this.actions$.pipe(
ofType(ReadingListActions.markBookAsFininshed),
concatMap(({ item }) =>
this.http.put(`/api/reading-list/${item.bookId}/finished`, item)
)
),{dispatch: false}
);
`service.ts`
async markAsRead(id: string): Promise<void> {
this.storage.update(list => {
const index = list.findIndex(x => x.bookId === id);
list[index].finished = true;
list[index].finishedDate = new Date().toISOString();
return list;
});
@Put('/reading-list/:id/finished')
async updateFinishedReadingList(@Param() params) {
return await this.readingList.markAsRead(params.id);
}**strong text**
解决方案
推荐阅读
- java - 用记事本编写并通过命令提示符启动的 Java 程序在编写类时都会遇到相同的错误
- ibm-mq - 在向 mq 发送消息之前需要删除 rfh 标头
- java - Visual Studio Code:Java 不会执行,除非 package 语句被注释掉
- javascript - 如何递归地改变元素的颜色
- c - 如何简化以下 C 代码?
- docker - 在 docker 容器中使用 node、npm 和 vuejs 进行开发?
- python - 为 IIS 配置 python
- filesystems - 我们可以在事务损坏后重放 jdb2 事务吗
- asp.net - 服务器响应为:5.7.57 SMTP - Office 365
- sql - 如何计算 SQL 中的平均唯一行?