2017-07-26 146 views
0

我有一个延迟加载组件和一个参数的问题。 我有两个模块:带有仪表板组件(DashboardComponent)的仪表板模块(DashboardModule)和另一个名为user(UserModule)的模块,其中一个组件(UserComponent)为示例。 UserComponent用于显示一个用户或创建一个新用户。 我想延迟加载模块UserModule。所以,我在我的文件app.routing.ts配置是:现在Angular 2路由延迟加载 - 路由中的参数

export const appRoutes: Routes = [ 
    { path: '', redirectTo: '/dashboard', pathMatch: 'full' }, 
    { path: '**', redirectTo: '/dashboard', pathMatch: 'full' }, 
    { path: 'user', loadChildren: 'app/user/user.module#UserModule' }, 
] 

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

,在我的模块用户,我有一个文件来配置我的路线:user.routing.ts。 而我想为我的两种情况使用相同的路由:如果我的路由中存在某个ID,则显示一个用户,如果ID为空,则创建一个用户。 因此,我想这一点,但它不工作:

const userRoutes: Routes = [ 
    { path: '', component: UserComponent }, 
    { path: ':id', component: UserComponent } // This line does not work 
]; 

@NgModule({ 
    imports: [RouterModule.forChild(userRoutes)], 
    exports: [RouterModule] 
}) 
export class UserRoutingModule { } 

如果我有一个ID我的路线,它不工作,automaticaly路线追溯到用户。 例如:locahost:4200/user/123不起作用,并且有一个重定向到localhost:4200 /用户

我没有在这个案例中找到示例,所以我希望有人会帮助我。

谢谢。

+0

当我看到这种情况发生删除

{ path: '**', redirectTo: '/dashboard', pathMatch: 'full' },

设定时出现错误的地方。你有没有检查控制台,看看是否有任何错误发生?你也可以考虑打开路由追踪(如这里所示https://stackoverflow.com/questions/43618663/why-does-nothing-happen-when-i-click-on-a-link-built-with-routerlink-和-querypa/43618789#43618789)以更好地看到发生了什么。 – DeborahK

+0

您是否正在导入user.module中的UserRoutingModule? – Gauss

回答

0

您应该appRoutes

+0

为什么? (我不是不同意,但它可以帮助其他人理解这是干什么的,以及干扰的原因。) – msanford

+1

根据文档: '最后一条路径中的**路径是通配符。如果请求的URL不匹配配置中前面定义的路由的任何路径,路由器将选择此路由。这对于显示“404 - 未找到”页面或重定向到另一条路线很有用。 配置中的路由顺序很重要,这是由设计决定的。' 因此,不是删除,而是将其移动到'appRoutes'对象声明的末尾 –

+0

是否需要更新我的答案? –

相关问题