【发布时间】:2019-02-27 04:42:32
【问题描述】:
我在一个角度工作区中有两个不同的项目。我想根据 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 这样的单独路径。
也尝试使用绝对路径和相对路径,但它不起作用
【问题讨论】:
-
您的 window.id 是否发生了变化?控制台,看看!还分别对 project1 和 project2 进行硬编码,并检查路由是否对它们都有效。
-
window.id 不会改变。你如何指代硬编码
-
通过硬编码我的意思是,
const routes: Routes = [selectedProject];尝试const routes: Routes = [project1];和类似的项目2,以确保它们是否正确加载。此外,如果您使用的是 javascript window 对象,它没有 id 属性,因此它应该评估为 undefined 因此条件为 false 并路由到 project2。
标签: angular angular6 angular-routing