Как изменить значение наблюдаемого массива объектов

#angular #typescript #http #rxjs #observable

Вопрос:

как я могу изменить одно свойство наблюдаемого массива объектов? В моем сервисе я выполняю http-запрос, чтобы получить все задачи:

 getTasks(): Observablelt;Task[]gt; {  return this.httpClient.getlt;Task[]gt;('http://localhost:8080/tasks'); }  

Это интерфейс моей задачи:

 export interface Task {  id: number;  name: string;  dueDate: Date;  taskstatus: TaskStatus;  user: User; }  

Проблема в том, что дата ответа объекта http-запроса-это просто строка, хотя я определил ее в базе данных как метку времени, я просто получаю метку времени в виде строки, например «2021-09-25Т11:36:29.000 00:00».

Теперь мой вопрос в том, как я могу изменить значение внутри наблюдаемого, например: task.DueDate = новая дата(task.DueDate), чтобы я мог преобразовать все строки даты в фактические типы дат. (для всех объектов массива)

Ответ №1:

map оператор используется для преобразования данных в наблюдаемых объектах, и вы будете использовать массив map внутри rx map для преобразования каждого объекта в массиве:

 getTasks(): Observablelt;Task[]gt; {  return this.httpClient.getlt;Task[]gt;('http://localhost:8080/tasks').pipe(  map(tasks =gt; tasks.map(task =gt; {  // do whatever to the task  task.dueDate = new Date(task.dueDate);  return task;  }))  ); }  

возможно, вам придется повозиться со своими наборами, чтобы заставить его скомпилироваться.