에서 다른 하나 :실행 리졸버 다음과 같은 경로를 감안할 때 각도 2+
path: '',
component: MyComponent,
resolve: {
foo: FooResolver,
bar: BarResolver
}
첫 번째 해결 FooResolver
을 실행하기 위해 각 말하는 어떤 방법이 있나요, 그리고 첫 번째 한 후 두 번째 해결 BarResolver
을 실행 끝내다?
에서 다른 하나 :실행 리졸버 다음과 같은 경로를 감안할 때 각도 2+
path: '',
component: MyComponent,
resolve: {
foo: FooResolver,
bar: BarResolver
}
첫 번째 해결 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
에서 반환되는 관측 경우 제대로 해결하려면 그렇지 않으면 추가 안전 장치가 추가되어야합니다 (예 : await Observable.of(this.fooResolver.resolve(route)).toPromise()
).
FooBar
및 Foo
또는 Bar
은 같은 경로에 나타나서는 안됩니다. 중복 된 결과가 발생하기 때문입니다.
이 코드는 작동하고 코드를 재사용 할 수 있습니다. 많은 감사합니다! –
당신을 진심으로 환영합니다. – estus
아니요, 아니요 –
무엇을하려고 하든지간에. 더 좋은 방법이 있습니다. – Carsten
그것은'foo'와'bar'가 무엇이고 왜이 순서로 해결되어야하는지에 달려 있습니다. 그러나 일반적으로 foo와 bar가 포함 된 객체로 푸시하는 FooBarResolver를 사용하면이 작업을 수행 할 수 있습니다. – estus