如何更改对象数组的 Observable 的值
How to change the value of an Observable of Object Arrays
如何更改对象数组的 Observable 的单个 属性。在我的服务中,我正在执行一个 http 请求以获取所有任务:
getTasks(): Observable<Task[]> {
return this.httpClient.get<Task[]>('http://localhost:8080/tasks');
}
这是我的任务界面:
export interface Task {
id: number;
name: string;
dueDate: Date;
taskstatus: TaskStatus;
user: User;
}
问题是,http 请求的响应对象的到期日期只是一个字符串,虽然我在数据库中将它定义为时间戳,但我只是得到一个时间戳作为字符串
“2021-09-25T11:36:29.000+00:00”。
现在我的问题是如何更改 Observible 中的值,例如:
task.dueDate = 新日期(task.dueDate)
这样我就可以将所有日期字符串转换为实际的日期类型。 (对于数组的所有对象)
map
运算符用于可观察对象的数据转换,您将使用 rx map
内部的数组 map
来转换数组中的每个对象:
getTasks(): Observable<Task[]> {
return this.httpClient.get<Task[]>('http://localhost:8080/tasks').pipe(
map(tasks => tasks.map(task => {
// do whatever to the task
task.dueDate = new Date(task.dueDate);
return task;
}))
);
}
您可能需要 fiddle 输入才能编译。
如何更改对象数组的 Observable 的单个 属性。在我的服务中,我正在执行一个 http 请求以获取所有任务:
getTasks(): Observable<Task[]> {
return this.httpClient.get<Task[]>('http://localhost:8080/tasks');
}
这是我的任务界面:
export interface Task {
id: number;
name: string;
dueDate: Date;
taskstatus: TaskStatus;
user: User;
}
问题是,http 请求的响应对象的到期日期只是一个字符串,虽然我在数据库中将它定义为时间戳,但我只是得到一个时间戳作为字符串 “2021-09-25T11:36:29.000+00:00”。
现在我的问题是如何更改 Observible 中的值,例如: task.dueDate = 新日期(task.dueDate) 这样我就可以将所有日期字符串转换为实际的日期类型。 (对于数组的所有对象)
map
运算符用于可观察对象的数据转换,您将使用 rx map
内部的数组 map
来转换数组中的每个对象:
getTasks(): Observable<Task[]> {
return this.httpClient.get<Task[]>('http://localhost:8080/tasks').pipe(
map(tasks => tasks.map(task => {
// do whatever to the task
task.dueDate = new Date(task.dueDate);
return task;
}))
);
}
您可能需要 fiddle 输入才能编译。