【问题标题】:Adding a route prefix for an outside module's routes?为外部模块的路由添加路由前缀?
【发布时间】:2018-06-13 10:50:35
【问题描述】:

在我的app.module.ts 文件中,我(急切地)导入LoginModule,它具有自己的路由模块login-routing.module.ts - 假设我无法更改它)

我还导入了另一个路由模块(AppRoutingModule - 处理所有惰性模块)。

app.module.ts:

    @NgModule({
                  bootstrap   : [AppComponent],
                  imports     : [
                      ...
                      LoginModule,
                      AppRoutingModule
                      ...
                  ]...

login-routing.module.ts 文件有自己的路由:

login-routing.module.ts :

  const LoginRoutes: Routes = [
    {
        path     : 'welcome',
        component: WelcomeComponent
    },
    {
        path     : 'loginSms',
        component: LoginSmsComponent
    },
    {
        path     : 'loginPassword',
        component: LoginPasswordComponent
    },
    {
        path     : 'passwordExpired',
        component: PasswordExpiredComponent
    }
];


@NgModule({
            ...
          })
export class LoginRoutingModule
    {
    }

AppRoutingModule 有:

const routes: Routes = [
    /* {    path      : "",    redirectTo: "/welcome",    pathMatch : "full"},*/
    {
        path    : 'app',
        children: [
            {
                path        : "home",
                loadChildren: "~/modules/home/home.module#HomeModule"
            },
            {
                path        : "payments",
                loadChildren: "~/modules/payments/payments.module#PaymentsModule"
            }
        ]
    }
 ...

请注意,我使用前缀为 app 的 ComponentLess 路由只是为了组织路由。

那么问题出在哪里?

我想将登录路由添加到 "app routes" ,这样我就可以访问登录路由: app/login/...

换句话说 - 现在 - AppRoutingModule 应该是:

  path    : 'app',
            children: [
                {
                    path        : "home",
                    loadChildren: "~/modules/home/home.module#HomeModule"
                },
                {
                    path        : "payments",
                    loadChildren: "~/modules/payments/payments.module#PaymentsModule"
                },
                {
                    path        : "login",
                     //but how o I load all `login-routing.module.ts` routes here ?

                },

            ]

但是LoginModule应该是渴望加载而不是延迟加载,所以我不能使用loadChildern

问题:

简而言之,我如何访问登录模块路由:

app/login/loginPassword

而不是

/loginPassword

?

【问题讨论】:

  • 如果这样做的真正原因是让 LoginModule 热加载,你也可以使用路由器的preloadingStrategy
  • @PierreDuc 哦。所以你的意思是添加它,就好像它是惰性的 (loadChildren),只是添加 preloadingStrategy 提示?
  • 对了,要我发一个例子吗?
  • @PierreDuc 不,谢谢。我得到了它。顺便说一句,我看到了这个 answer here also - 但他只加载了数组路由而不是路由 module 。我不在我的应用程序中使用 - 普通路由数组。我到处都使用路由 modules
  • 别难过,一切都会好的

标签: javascript angular


【解决方案1】:

你添加了吗 RouterModule.forRoot([ { path: '', redirectTo: 'login', pathMatch: 'full' } 像这样在 app.module 中

【讨论】:

  • 这无济于事。问题不在于初始重定向。但是从现在开始,整个登录路由都应该加上前缀。另外 - 这应该是一条评论
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 1970-01-01
  • 2021-10-30
  • 2021-11-08
  • 2020-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多