Как я могу ввести зависимости для UrlMatcher маршрута?
Мне нужно вызвать в серверный API, чтобы узнать правильный маршрут для каждого URL-адреса (путем анализа правил перезаписи и выполнения запросов в WordPress).
Вот почему мне нужна служба Singleton для UrlMatcher, чтобы один раз получить данные, а затем использовать их для определения маршрута (и затем ввести их в компонент с полученными данными).
Я создал фабрику UrlMatcher:
{
component: PostComponent,
matcher: wpApiUrlMatcherFactory('post')
}
Но я не знаю, как использовать один и тот же сервис во всех из них и как создать его, не используя плохой практический код.
@ mait.taim Нет, в итоге я использовал один топ-компонент и динамическое создание компонентов без встроенного роутера.





1. В main.ts:
export let appInjector: Injector;
platformBrowserDynamic().bootstrapModule(AppModule)
.then(m => appInjector = m.injector)
2. В модуле маршрутизатора:
import {appInjector} from '../../main';
const routes: Routes = [
{
matcher: (segments: UrlSegment[]): UrlMatchResult => {
if (appInjector.get(AccessService).hasAccess('test')) {
return {consumed: [segment]};
}
},
component: TestComponent,
];
Разве это не круговая зависимость?
Нет, пользуюсь успешно
Получено предупреждение о циклической зависимости: client: 135 Обнаружена циклическая зависимость: src / app / app.module.ts -> src / app / app.router.ts -> src / main.ts -> src / app / app.module.ts
Я не использовал импорт из основного в модуле приложения или модуле маршрутизации приложения. В вашем случае попробуйте сохранить инжектор приложения в другом файле.
Вы когда-нибудь находили решение этой проблемы?