使用相关的http请求实现解析器路由

时间:2019-02-05 14:46:12

标签: angular typescript rxjs

我有一个依赖的http调用的实现,它的运行就像一个魅力。问题是我想使用解析器来调用填写表格的数据,在此应用程序之前简单地显示微调器加载,直到加载了所有数据,但是使用解析器,我会将所有数据加载在一起,所以我想选择它,问题是我不知道我的方法是否好。

这是我在表单组件中的派生联接

 forkJoin([this.service.getProvince(), this.service.getLingueStraniere(), this.service.getTitoliPreferenziali(), this.service.getRiserve()])
      .pipe(switchMap(result => {
        console.log('Province', result[0]);
        console.log('LingueStraniere', result[1]);
        console.log('TitoliPreferenziali', result[2]);
        console.log('Riserve', result[3]);
        return this.service.getDomanda();
      }))
      .subscribe((domanda: any) => {
          this.popolaForm(domanda); 
        },
        (error: AppError) => {
          if (error instanceof NotFoundError) {
            console.log('Error richiesta http');
          } else {
            console.log(error);
          }
        }); 

在调用最后一个http调用“ getDomanda()”之前,我用列表填充了一些过滤器表单,然后在我用最后一次调用填充了主表单,因此要进行最后一次调用,我需要先填充过滤后的表单。 先前的分叉联接应移至解析器。如何将第一个数据传递给下拉列表,然后传递给表单?请注意,下拉过滤列表也是主表单组的一部分

这应该是在解析器中编写的代码,是安全的实现,还是我应该在表单组件中使用forkjoin?谢谢。

     constructor(private service: DataService) { } 
    resolve(route: ActivatedRouteSnapshot,
              state: RouterStateSnapshot): Observable<Data> {
        return forkJoin([this.service.getProvince(), this.service.getLingueStraniere(), this.service.getTitoliPreferenziali(), this.service.getRiserve()])
          .pipe(switchMap(result =>
            return this.service.getDomanda();
          }));
    } 

0 个答案:

没有答案