簡體   English   中英

Angular 2 Router:導航到其他組件

[英]Angular 2 Router: Navigating to other components

給定根路由模塊

const appRoutes: Routes = [
    {
        path: '',
        component: HomeComponent,
        children: [
            {
                path: 'users',
                loadChildren: './pages/users/users.module#UsersModule'
            }
        ]
    },
    {path: '', redirectTo: '', pathMatch: 'full'},
    {path: '**', redirectTo: '/login'}
];

export const appRouting: ModuleWithProviders = RouterModule.forRoot(appRoutes);

和用戶路由模塊

const usersRoutes: Routes = [
    {
        path: '', component: UsersComponent,
        children: [
            {path: 'admittances', component: AdmittancesComponent},
            {path: 'admittance/:id', component: AdmittanceDetailComponent}
        ]
    }
];

export const usersRouting: ModuleWithProviders = RouterModule.forChild(usersRoutes);

我想從AdmittancesComponent導航到AdmittanceDetailComponent

但是,而不是使用

this._router.navigate(['admittance', id]); // ERROR

我寧願使用

this._router.navigate(['users/admittance', id]); // WORKS

有人可以解釋為什么第一個示例不起作用以及為什么第二個示例可以解決該問題嗎?

以下鏈接來自Angular文檔: https : //angular.io/guide/router#relative-navigation

對於使用.navigate的相對路由,您需要這樣的語法:

this.router.navigate([crisis.id], { relativeTo: this.route });

非常簡單appRoutes是主要路線,用戶路線是Main Route的子級。 由於您在appRoutes中將路徑的名稱定義為'users',因此這將是您的第一個url參數,因此domain.com/users/childRoutes ...

現在,您已經定義了稱為准入的子級,該子級將由父級Route用戶作為前綴/所以domain.com/users/admitance

如果您在appRoutes中定義了路線“准入”,那么第一條語句就行得通

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM