鉴于以下路线:
path: '',component: MyComponent,resolve: { foo: FooResolver,bar: BarResolver }
有没有办法告诉angular执行第一个解析器FooResolver,只有在第一个解析器完成后才执行第二个解析器BarResolver?
@H_403_5@@H_403_5@
解析器并行解析.如果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不应出现在同一路径中,因为这会导致重复的分辨率.
@H_403_5@ 原文链接:https://www.f2er.com/angularjs/143394.html