Цепочка Два запрашивает и возвращает объект Angular 7 - PullRequest
0 голосов
/ 11 июня 2019

У меня есть запрос для поиска уведомлений, которые соответствуют поисковому вводу пользователя, но каждое соответствующее уведомление имеет свойства newsId, я хочу, чтобы, когда я получил уведомление от сервера, сделал еще один запрос для поиска объекта новостей из newsId свойства и после возврата объект с уведомлением объект и новости объект

import { Notification } from './notification';
import { New } from './new';

export class NotificationEditResponse {
  notification:Notification;
  newsBelong?:New;
  error?:any;
}



export class EditNotificationsResolverService implements Resolve <NotificationEditResponse> {

  constructor(private notificationService:NotificationsService) { }

  return this.notificationService.getNotificationById(+id)
.pipe(
  flatMap(notificationObj=>{
    return this.newsService.getNewById(notificationObj.newsId)
    .pipe(
      map((res:New)=>({
        notification:notificationObj,
        newsBelong:res
      })),
    catchError(error=>{
    const msg=`Retrieval error : ${error}`;
    console.log(msg);
    return of({notification:null, error:msg,newsBelong:null});
  })
    )
  })
 );

}

}

1 Ответ

0 голосов
/ 12 июня 2019

лучше использовать concatMap вместо flatMap, поскольку в соответствии с вашим вариантом использования this.newsService.getNewById должно подождать, пока this.notificationService.getNotificationById выдаст значение.

...