Проблема вашей конструкции в том, что вы изначально используете BehaviorSubject
. Угловой маршрутизатор ожидает, что результат вашего резольвера будет завершен до возврата данных. Поэтому, используя BehaviorSubject
, предположите, что у вас есть только одно значение за раз, но значение всегда может измениться.
Чтобы сделать эту работу, я думаю, что вы можете взять только первый испущенный ответ / значение, например, используя оператор first
:
resolve(): Observable<SportType[]> | Observable<Observable<SportType[]>> | Promise<Observable<SportType[]>> {
return this._sportTypesSubject.asObservable().pipe(first())
}
Согласно документации Angular
Класс провайдера данных может использоваться с маршрутизатором для разрешения данных во время навигации. Интерфейс определяет метод resol (), который будет вызываться при запуске навигации. Затем маршрутизатор будет ожидать разрешения данных, прежде чем маршрут будет окончательно активирован.