我已经研究了一段时间,关于如何正确地(在功能模块中)正确设置子路径和参数。我不知道自己的路由做错了什么
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AdministrationComponent } from './administration.component';
import { UsersComponent } from './users/users.component';
import { UserComponent } from './user/user.component';
const routes: Routes = [
{
path: '', component: AdministrationComponent,
children: [
{ path: '', redirectTo: 'administration', pathMatch: 'full' },
{ path: 'users', component: UsersComponent },
{
path: 'user', component: UserComponent,
children: [
{ path: ':id', component: UserComponent }
]
}
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AdministrationRoutingModule { }
所有路由都可以正常加载。但是,该参数始终是未定义的。
浏览到/ administration / user /?id = 2或/ administration / user / 2时
// UserComponent
ngOnInit() {
this.route.params.subscribe(params => {
this.id = params['id']; // undefined. params logs empty {}
});
}
解决方案:
只要:id是'user'的子路由,我就无法访问该参数。
我确实得到了path: 'user/:id', component: UserComponent
的帮助,但这是它自己的警告。
差异是how you access个子代,一个子代和父代参数。
// this.route.children
// this.route.firstChild.params
// this.route.parent.params
答案 0 :(得分:-1)
该网址应不包含 (querystring)
?
,并且可以正常运行
/administration/user/2