我在一个角形工作区中有两个不同的项目。我想基于app.routing.ts中的全局变量动态更改路线
这是我的应用程序路由模块:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const project1 = {
path: '',
loadchildren: '../module1#module1'
};
const project 2 = {
path: '',
loadchildren: '../module2#module2'
};
const selectedProject = window.id === 1 ? project1 : project2;
const routes: Routes = [selectedProject];
@NgModule({
imports: [RouterModule.forRoot(routes, {
useHash: true,
paramsInheritanceStrategy: 'always'
})],
exports: [RouterModule]
})
export class AppRoutingModule { }
它总是与第二个项目一起进行。
注意: 我想用空路径而不是像project1,project2这样的单独路径来加载它。
也尝试使用绝对路径和相对路径,但不起作用
答案 0 :(得分:0)
它是创建单独的routes数组并根据项目加载它们的唯一方法,但是这样做的缺点是您应该在每个window.id更改时重新加载。
应使用绝对路径将延迟加载模块导入DataType(ElementType::TYPE2, 1)
中。 e.x:
angular.json
在路由器配置期间,应粘贴绝对路径,而不是相对路径:
"lazyModules": [
"projects/website/src/app/pages/module1",
"projects/website/src/app/pages/module2"
]
答案 1 :(得分:-1)
出于多种原因,您不能使用全局变量更改路由。
要使用路由在模块之间进行选择,请使用参数键或分配路由:
const project1 = {
path: '/1',
loadchildren: '../module1#module1'
};
const project 2 = {
path: '*',
loadchildren: '../module2#module2'
};
当然,您必须使用route & navigation