我是否需要为每个实现新接口的服务调用编写Route Resolver?

时间:2018-01-18 18:53:28

标签: angular angular-routing resolver

我对Angular 4中的路由有一个疑问,特别是处理解析数据的问题。

我的应用程序将通过实施路由解析器而受益匪浅;但是,我正在开发一个复杂的Web应用程序。在我的一个路由(联系页面)中,有几个组件被渲染,每个组件都有一个不同的服务调用后端。每个呼叫都实现了不同的接口。这是由于数据库限制。

他们是否可以为我的每项服务编写1个解析器,或者我是否需要为实现新接口的每个服务调用编写解析器?

1 个答案:

答案 0 :(得分:4)

您可以在一个解析器中执行所有操作,如下所示:

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {

     return Observable.forkJoin(
         this.someService.apiCallA(),
         this.someService.apiCallB(),
         this.someService.apiCallC(),
      )
      .map(([resA, resB, resC]: [ResponseAType, ResponseBType, ResponseCType]) => {
            return {
               aData: resA,
               bData: resB,
               cData: resC
            };

      });

}

然后在主页组件中:

constructor(private aRoute: ActivatedRoute) {

      aRoute.data.subscribe((data: any) => {
         // You can find aData, bData, and cData here inside of data
         // Pass them down into the components that need them
      });

   }