Angular Platform-server(Universal):带有参数的路由

时间:2017-08-24 11:02:44

标签: angular express angular-universal platform-server

我试图在我的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时,我在浏览器控制台中遇到以下错误

  

错误:未捕获(在承诺中):错误:无法匹配任何路由。网址细分:' item / thisistheparam'

1 个答案:

答案 0 :(得分:0)

哎呀我发现了问题,我忘了将路径添加到我的懒人模块中;)

分别在我的item.module.ts:

@NgModule({
  declarations: [ItemView],
  imports: [
    RouterModule.forChild([
      { path: ':id', component: PublicItemView, pathMatch: 'full'}
    ])
  ]
})

我将path: ''更改为path: ':id'以及所有内容,如果现在像魅力一样工作