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' 并且现在一切都很顺利