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