在面向用户身份验证后从Login组件重定向后,我面临一个angular2组件“Home”加载2次的问题 . 请在下面找到有关组件和路由的详细信息: -

我有一个Login组件,它是LOGIN_ROUTER_PROVIDERS的一部分 . LOGIN_ROUTER_PROVIDERS包含以下路线

const loginRoutes: Routes = [
        { path: '', component: Login },
        { path: 'login', component: Login },
        { path: 'Home', component: Home, pathMatch: 'full' },
        ...HOME_ROUTER_PROVIDERS
    ];
    export const LOGIN_ROUTER_PROVIDERS: ModuleWithProviders =    RouterModule.forRoot(loginRoutes);

我的登录组件由以下方法组成,该方法具有重定向到Home组件 .

export class Login {
    ...
    public Login(userId, password)
    {
        //authenticate user and on sucessful authentication redirected to Home
         this.router.navigate(['/Home']);
    }

}

在登录/身份验证之后,在HOME_ROUTER_PROVIDERS中配置主组件和一些其他子级路由组件 .

HOME_ROUTER_PROVIDERS包含以下路由配置

export const HOME_ROUTER_PROVIDERS: Routes = [
    {
        path: 'Home',
        component: Home,
        children: [
            { path: 'WorkbookList/:group', component: WorkbookList },
            { path: 'Workbook/:workbookID', component: Workbook },

            //some other child level routing components route
        ]
    }
];

家庭组件如下

export class Home {
        constructor(private _SessionService: SessionService) {
            console.log("In constructor of Home - After Login route");
        }
    }

当应用程序执行并成功验证时,主组件正在加载,但在控制台上我可以注意到语句“在Home的构造函数 - 登录后路由”被打印2次 .

我尝试在loginRoutes const中注释以下两行,但我收到的错误消息为“ Error: Cannot match any routes: 'Home'

{ path: 'Home', component: Home, pathMatch: 'full' },
...HOME_ROUTER_PROVIDERS

我在这里做的错误是什么以及为什么家庭组件加载2次?

我是否需要在单独的NgModule中使用loginRoutes和HOME_ROUTER_PROVIDERS?目前在我的设计中,两者都驻留在同一模块中,即所有组件都在同一模块中 . 在同一模块中的这个场景中,如何拥有2条不同的路由并从一个路由重定向到另一个路由?有任何想法吗?