为外部模块的路由添加路由前缀?

时间:2018-06-13 10:50:35

标签: javascript angular

在我的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路由" ,以便我将访问登录路由: 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

1 个答案:

答案 0 :(得分:0)

你添加了吗? RouterModule.forRoot([       {path:'',redirectTo:' login',pathMatch:' full'在app.module

中这样