UrlMatcher 中的 Angular 6+ 依赖注入和异步

2023-11-23

如何为路由注入依赖项UrlMatcher并执行异步路由匹配?

我需要调用后端 API,以便找到每个 URL 的正确路由(通过解析重写规则并在 WordPress 中运行查询)。

这就是为什么我需要一个单例服务UrlMatcher获取一次数据,然后用它来确定路由(然后将其注入到包含获取的数据的组件中)。

我创建了一个 UrlMatcher 工厂:

      {
        component: PostComponent,
        matcher: wpApiUrlMatcherFactory('post')
      }

但我不知道如何向所有匹配器注入相同的服务以及如何使其工作,因为该服务是异步的并且UrlMatcher无法返回Promise or an Observable.


1.In 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,
];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UrlMatcher 中的 Angular 6+ 依赖注入和异步 的相关文章