данные другого ресолвера? но при ресолве мы не можем гарантировать что первый ресолвер уже заресолвился. Я в общем решил для себя эту траблу, очень просто:
//в роуте
{
data: {
model1$: new BehaviorSubject(null)
},
{
model1: Model1Resolver,
model2: Model2Resolver
}
}
//в методе ресолв первой модели
//Model1Resolver
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean>|Promise<boolean>|boolean {
return this.model1Service.get().do(model1 => route.data.model1$.next(model1)). //пихаем в сабжект нашу модель
}
//Model2Resolver
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean>|Promise<boolean>|boolean {
return route.data.model1$.filter(model1 => !!model1).take(1).do(model1 => ну и вы поняли тут спокойно получаем данные первой модели и юзаем их как надо для ресолва второй
}
то есть через data атрибут роута шарим данные через заранее созданные сабжекты, меня раньше эта проблема дико мучала и заставляла писать костыли, может кому то поможет идея
Сделай сервис - и этот сервис инжекти в оба резолвера - сами данные будут в этом сервисе.
Обсуждают сегодня