Angular 平台服务器(通用):带获取参数的路由
Angular Platform-server (Universal): route with get params
我试图在我的 platform-server
/universal
应用程序中使用获取参数描述一条路线,但到目前为止没有任何成功。
有人知道如何定义实现吗?
根据我从 express
路由中了解到的信息,我尝试了以下操作,但最终遇到错误
routes.ts:
export const ROUTES: string[] = [
'/',
'/item/:id'
];
main.server.ts:
ROUTES.forEach((route: string) => {
app.get(route, (req: Request, res: Response) => {
res.render('../dist/index', {
req: req,
res: res
});
});
});
我的组件:
constructor(private route: ActivatedRoute) {
}
ngOnInit() {
this.sub = this.route.params.subscribe(params => {
console.log(params['id']);
});
}
使用此代码,服务器 npm start
启动时没有错误,但是当我调用 http://localhost:8000/item/thisistheparam
时,我在浏览器控制台中遇到以下错误
Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'item/thisistheparam'
哎呀,我发现问题了,我也忘了添加我的惰性模块的路径 ;)
分别在我的item.module.ts:
@NgModule({
declarations: [ItemView],
imports: [
RouterModule.forChild([
{ path: ':id', component: PublicItemView, pathMatch: 'full'}
])
]
})
我将 path: ''
更改为 path: ':id'
并且现在一切都很顺利
我试图在我的 platform-server
/universal
应用程序中使用获取参数描述一条路线,但到目前为止没有任何成功。
有人知道如何定义实现吗?
根据我从 express
路由中了解到的信息,我尝试了以下操作,但最终遇到错误
routes.ts:
export const ROUTES: string[] = [
'/',
'/item/:id'
];
main.server.ts:
ROUTES.forEach((route: string) => {
app.get(route, (req: Request, res: Response) => {
res.render('../dist/index', {
req: req,
res: res
});
});
});
我的组件:
constructor(private route: ActivatedRoute) {
}
ngOnInit() {
this.sub = this.route.params.subscribe(params => {
console.log(params['id']);
});
}
使用此代码,服务器 npm start
启动时没有错误,但是当我调用 http://localhost:8000/item/thisistheparam
时,我在浏览器控制台中遇到以下错误
Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'item/thisistheparam'
哎呀,我发现问题了,我也忘了添加我的惰性模块的路径 ;)
分别在我的item.module.ts:
@NgModule({
declarations: [ItemView],
imports: [
RouterModule.forChild([
{ path: ':id', component: PublicItemView, pathMatch: 'full'}
])
]
})
我将 path: ''
更改为 path: ':id'
并且现在一切都很顺利