2017-03-28 29 views
0

使用默認路由策略或NoPreloadingStrategy預裝路由會更改url但完全不初始化組件(頁面爲空)。@angular - Defualt/NoPreloading策略打開空白頁面,組件根本未初始化

app.module.ts

imports: [ 
    BrowserModule, 
    SharedModule, 
    CoreModule.forRoot(), 
    AppRoutingModule, 
    ], 

app.routing.module.ts

const appRoutes: Routes = [ 
    { path: 'cart', canActivate: [CartGuardService], component: CartComponent }, 
    { path: 'login', loadChildren: './login/login.module#LoginModule' }, 

    { path: '', redirectTo: '/cart', pathMatch: 'full' }, 
]; 

@NgModule({ 
    imports: [ 
    RouterModule.forRoot(appRoutes) 
    ], 
    exports: [ 
    RouterModule 
    ], 
    providers: [ 
    ] 
}) 
export class AppRoutingModule { } 

登錄-routing.module.ts

const routes: Routes = [ 
    { path: 'login', canActivate: [LoginGuardService], component: LoginComponent } 
]; 

@NgModule({ 
    imports: [RouterModule.forChild(routes)], 
    exports: [RouterModule], 
    providers: [] 
}) 
export class LoginRoutingModule { } 

在我的app.component.html按鈕點擊導航到使用登錄網址。

this.router.navigate(['/login']) 
在login.component.ts

既不構造ngOnInit被調用時,已經把的console.log在兩人面前,沒有在控制檯會打印,在地址欄中的URL被改變但它打開空白頁面。

納克--version

@angular/cli: 1.0.0 
node: 6.9.1 
os: win32 x64 
@angular/common: 4.0.0 
@angular/compiler: 4.0.0 
@angular/core: 4.0.0 
@angular/forms: 4.0.0 
@angular/http: 4.0.0 
@angular/platform-browser: 4.0.0 
@angular/platform-browser-dynamic: 4.0.0 
@angular/router: 4.0.0 
@angular/animations: 4.0.0 
@angular/cli: 1.0.0 
@angular/compiler-cli: 4.0.0 

回答

0

我想你應該檢查看守。如果用戶沒有登錄,請確保CartGuardService重定向到登錄名。

如果它成功導航到登錄名,則什麼也沒有發生,那麼問題來自LoginGuardService

你沒有使用不關閉的observable嗎?

+0

刪除了所有的路由守衛,但仍然是同樣的問題。 @phacic –