如何为路由的UrlMatcher
注入依赖项?
我需要对后端API进行调用,以找到每个URL的正确路由(通过解析重写规则并在WordPress中运行查询)。
这就是为什么我需要UrlMatcher
的Singleton服务来一次获取数据,然后使用它来确定路由(然后将其与获取的数据一起注入到组件中)。
我创建了一个UrlMatcher工厂:
{
component: PostComponent,
matcher: wpApiUrlMatcherFactory('post')
}
但是我不知道如何在所有这些服务中使用相同的服务,以及如何在不使用不良实践代码的情况下创建它。
最佳答案
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,
];