Вот мой распознаватель
@Injectable()
export class FieldsResolver implements Resolve<string[]> {
private result:Array<string> | null = null;
constructor(private httpClient:HttpClient) {}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return this.result || this.httpClient.get<Array<string>>('<api_route>')
.pipe(
tap(fields => {
this.result= fields;
})
);
}
}
Как видите, данные, возвращаемые распознавателем, не зависят от моего маршрута.Таким образом, мне не нужно фактически выполнять запрос к моему API каждый раз, когда меняется маршрут.
Мой код выше работает: он выполняет запрос только в первый раз.И в течение следующих нескольких раз он вернет кэшированный результат.
Мне было просто интересно, есть ли более rxjx способ сделать это.