angular - 我想使用 filter() 运算符来删除一个元素,但是在将更改后的列表作为新列表传递时遇到了麻烦?
问题描述
当我尝试使用 Filter() 运算符删除元素时,我一直坚持这个问题。我想将更改后的列表作为新列表传递,但不知道如何。有任何想法吗?
我的 Service.ts 代码:
export class TaskServiceService {
constructor() { }
getTasks(): Observable<Task[]> {
return of(TASKS);
}
filterTasks(task: Task):Observable<Task[]>{
let filteredTasks = TASKS.filter(t => t.name !== task.name);
return of(filteredTasks);
}
}
这是我的 Component.ts 文件,我想从虚拟数据中传递列表:
ngOnInit(): void {
this.getTasks();
}
deleteTask(task : Task){
this.taskService.filterTasks(task)
.subscribe(tasks => this.tasks = tasks);
}
以及来自 Component.html 文件的片段:
<button class="btn btn-danger btn-sm" (click)="deleteTask(task)">x</button>
解决方案
为什么要使用 Observables 和订阅?对我来说似乎完全矫枉过正和复杂。这只是关于删除一个简单数组中的一项,不是吗?
假设您的task
界面有一个id
字段:
<button class="btn btn-danger btn-sm" (click)="deleteTask(task)">x</button>
deleteTask(task : Task){
this.tasks = this.tasks.filter( t => t.id !== task.id )
}
推荐阅读
- sql - 在特定时间之前获取时间戳的正确语法是什么?
- sql-server - DACPAC 抱怨带有 FOR SYSTEM_TIME 子句的视图
- python - 用 DataFrame 的 NaN 替换特定范围的值
- javascript - 尝试从帧缓冲区传递纹理会导致 L_INVALID_OPERATION:glDrawArrays:绘制的源纹理和目标纹理相同
- javascript - 出现“对象作为 React 子对象无效”的错误
- asp.net-core - 将我的 JWT 连接到 .NET Core 的 IHttpContextAccessor.User
- angular - Angular/RxJS 轮询超时和间隔取决于 api 响应时间
- node.js - 为什么令牌上有 JWT(JSON Web 令牌)前缀?回复:JsonWebTokenError:无效令牌
- node.js - Twilio 如何在 switch 语句中添加 PAUSE
- java - Springboot Thymeleaf MySql Hibernate 试图通过 ID 以外的其他方式从数据库中提取