Angular 使用配置中的外部URL填充路由

Angular 使用配置中的外部URL填充路由,angular,config,angular-routing,Angular,Config,Angular Routing,我的路线定义为: export const routes: Routes = [ { path: "", redirectTo: "/datasets", pathMatch: "full" }, { path: "help/youtube", canActivate: [RedirectGuard], component: RedirectGuard, data: { externalUrl: "https://youtube.com" } }, ...

我的路线定义为:

export const routes: Routes = [
  { path: "", redirectTo: "/datasets", pathMatch: "full" },
  {
  path: "help/youtube",
  canActivate: [RedirectGuard],
  component: RedirectGuard,
  data: {
    externalUrl:  "https://youtube.com"
  }
},
...
    @NgModule({
      imports: [RouterModule.forRoot(routes)],
      exports: [RouterModule]
    })
    export class AppRoutingModule {}
其中redirect guard是一个处理外部URL的模块

我需要从appConfig中获取外部URL,而不是硬编码,但如果没有构造函数,我无法访问appConfig,如:

constructor(@Inject(APP_CONFIG) private appConfig) {}
因为appConfig被设置为具有注入令牌的模块,如:

export const APP_CONFIG = new InjectionToken<AppConfig>("app.config");
export const APP_CONFIG=new InjectionToken(“APP.CONFIG”);
因此,我尝试将此注射添加到我的批准模块中,但没有成功

如何访问appConfig来填充此外部URL?

因此我找到了一个解决方案

从重定向保护中访问appConfig(我从中获取)

将配置项名称作为
data[“externalUrl”]
传入,稍后我会将其重命名为更合适的名称。这将意味着硬编码的URL将无法工作,但我可以接受这一点

app-routing.module中的路由定义如下所示:

{
    path: "help/ingestManual",
    canActivate: [RedirectGuard],
    component: RedirectGuard,
    data: {
      externalUrl:  "ingestManual"
    }
  }
其中,ingestManual是在我的配置文件中定义的项

这使我能够将应用程序路由重定向到外部URL。

因此我找到了一个解决方案

从重定向保护中访问appConfig(我从中获取)

将配置项名称作为
data[“externalUrl”]
传入,稍后我会将其重命名为更合适的名称。这将意味着硬编码的URL将无法工作,但我可以接受这一点

app-routing.module中的路由定义如下所示:

{
    path: "help/ingestManual",
    canActivate: [RedirectGuard],
    component: RedirectGuard,
    data: {
      externalUrl:  "ingestManual"
    }
  }
其中,ingestManual是在我的配置文件中定义的项


这允许我将应用程序路由重定向到外部URL。

此处信息不足。我们需要了解您如何设置
APP\u CONFIG
注入令牌,此外,您不能注入模块定义,只能注入指令、组件、服务等。@AvinKavish是否可以推送到组件中的路由,并让appModule使用这些路由?不是应用模块使用路由,你只是在应用模块中导入路由器,同时向其传递一些默认路由。而不是推送每个远程路由,我建议使用一个像so
help/**
这样的全覆盖路由,并处理来自单个组件/防护的所有重定向,该组件/防护的唯一任务是解析路由并执行重定向。这里没有足够的信息。我们需要了解您如何设置
APP\u CONFIG
注入令牌,此外,您不能注入模块定义,只能注入指令、组件、服务等。@AvinKavish是否可以推送到组件中的路由,并让appModule使用这些路由?不是应用模块使用路由,你只是在应用模块中导入路由器,同时向其传递一些默认路由。而不是推送每个远程路由,我建议使用像so
help/**
这样的“全包”路由,并处理来自单个组件/防护的所有重定向,该组件/防护的唯一任务是解析路由并执行重定向。修改重定向防护可以很容易地处理配置查找和硬编码URL。修改重定向防护可以很容易地处理两个配置查找和硬编码URL。