如何为路由的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,
];

07-24 09:37