У меня есть функция сопоставления маршрутов в Angular 7, мне нужно выполнить вызов API, чтобы получить массив и проверить, содержит ли этот массив URL-адрес
Что я пробовал: Я вызвал API на APP_INITIALIZERи сохранил его в localStorage, проблема в том, что у меня есть Angular Universal, у которого нет localStorage, и я не могу внедрить любой сервис в функцию, которая находится вне класса машинописи, чтобы использовать сервис CookieService или HttpClient.Пробовал с Angular guard, но не знаю, как перейти к следующему объекту в массиве конфигурации маршрутов, в случае, если URL не найден в массиве категорий.
Что у меня сейчас:
export function DealsMatcher(url: UrlSegment[]): UrlMatchResult {
if (url.length === 0) {
return null;
}
let categories: HeaderCategoriesModel[];
// TODO: need to get categories from API
const param = url[0].toString();
const index = categories.findIndex(category => {
return category.title_translit === param;
});
if (index !== -1) {
return ({consumed: url, posParams: {slug: url[0]}});
}
return null;
}
const routes: Routes = [
{
path: ':slug',
matcher: DealsMatcher,
component: DealsComponent,
},
{
path: ':slug',
matcher: DealsDetailMatcher,
component: DealsDetailComponent,
resolve: {
deal: DealsDetailResolve
}
}
]
Я ожидал как-то внедрить сервис в функцию DealsMatcher или сделать ajax-запрос без внедрения.Также перейдите к следующей проверке маршрута, если используете угловой щит.