链二请求并返回一个对象Angular 7

时间:2019-06-11 17:12:10

标签: angular-http angular2-observables angular-http-interceptors angular-httpclient-interceptors

我有一个搜索与用户输入搜索匹配的通知的请求,但是每个匹配的通知都有一个newsId属性,我想在从服务器收到通知时提出另一个请求,以便从newsId中搜索新闻obj属性,然后返回带有通知obj和新闻obj的obj

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 :(得分:0)

最好使用concatMap而不是flatMap,因为根据您的用例,this.newsService.getNewById应该等待this.notificationService.getNotificationById发出一个值。