Я буквально схожу с ума, пытаясь использовать Resolver в Angular 6.
My Resolver, рабочая версия:
@Injectable()
export class MyResolver implements Resolve<boolean> {
constructor() {
}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return true;
}
Я ввожу это так в моей маршрутизации:
path: "secure",
component: SecureComponent,
canActivate: [AuthGuard],
canActivateChild: [AuthGuard],
resolve: {
myValue: MyResolver
}
Это работает правильно, конструктор компонента запущен, и я могу получить myValue из маршрута.
Но как только я изменю свой резольвер на:
return Observable.create(true);
Или любой код, который возвращает Observable вместо простого значения, конструктор компонента больше не запускается, и я получаю пустую страницу на своем маршруте. Код распознавателя по-прежнему выполняется полностью.
Я убедился, что конструктор не запущен, поместив console.log ("foo") в самую первую строку конструктора, и он не вызывается.
Так что я не могу понять, почему я не могу вывести наблюдаемое из моего преобразователя. Весь смысл решателей состоит в том, чтобы разрешать отложенные значения (таким образом возвращая наблюдаемые значения).
Что я делаю не так?