在Angular 2中一个接一个地执行解析器

前端之家收集整理的这篇文章主要介绍了在Angular 2中一个接一个地执行解析器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
鉴于以下路线:
path: '',component: MyComponent,resolve: {
    foo: FooResolver,bar: BarResolver
}

有没有办法告诉angular执行第一个解析器FooResolver,只有在第一个解析器完成后才执行第二个解析器BarResolver?

解析器并行解析.如果Foo和Bar应该被串联解析,它们应该是一个FooBar解析器.如果它们应该在其他路径中自己使用,FooBar可以包装Foo和Bar解析器:
class FooBarResolver implements Resolve<{ foo: any,bar: any }> {
  constructor(
    protected fooResolver: FooResolver,protected barResolver: BarResolver
  ) {}

  async resolve(route): Promise<{ foo: any,bar: any }> {
    const foo = await this.fooResolver.resolve(route);
    const bar = await this.barResolver.resolve(route);

    return { foo,bar };
  }
}

FooBar应该知道这个事实,如果它是从Foo和Bar返回的promise或者observable,以便正确地解决它们.否则应添加额外的安全设备,例如await Observable.from(this.fooResolver.resolve(route)).toPromise().

FooBar和Foo或Bar不应出现在同一路径中,因为这会导致重复的分辨率.

原文链接:https://www.f2er.com/angularjs/143394.html

猜你在找的Angularjs相关文章