Angular 2 路由检查参数是否包含有效值

mar*_*595 1 javascript angular2-routing angular

我在一个 angular2 组件中有以下代码:

ngOnInit() {
    this.route.params
      .switchMap((params: Params) => this.elementsService.getElement(+params['id']))
      .subscribe(element => {
                    this.elementToEdit = element;
                }
      );
  }
Run Code Online (Sandbox Code Playgroud)

此组件在两种情况下使用,一种id是在 url 中提供了,另一种是没有id提供。在第一种情况下,它工作正常。在第二个中,它可以工作,但控制台中出现 404 错误:api/elements/NaN.

我正在尝试解决这个问题,但我找不到一种方法来检查idurl 中是否存在:

ngOnInit() {
  if(this.route.params['id']){<---doesn't work
    this.route.params
      .switchMap((params: Params) => this.elementsService.getElement(+params['id']))
      .subscribe(element => {
                    this.elementToEdit = element;
                }
      );
  }
}
Run Code Online (Sandbox Code Playgroud)

如果id参数不存在,有没有办法做到这一点并避免调用服务?

Uma*_*nis 5

我在我的一个项目中使用这个对我来说很好

this.route.params.subscribe((params: any) => {
 if (params.id) {
  // Edit your element here
 } else {
  // Create your new element here
 }
});
Run Code Online (Sandbox Code Playgroud)

我的路线是这样的

{ path: "home/:id", component: HomeComponent },
Run Code Online (Sandbox Code Playgroud)