Angular 2 route检查params是否包含有效值

时间:2017-03-06 20:54:27

标签: javascript angular angular2-routing

我在一个angular2组件中获得了以下代码:

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

此组件用于两种情况,一种是在网址中提供id,另一种是未提供id的情况。在第一种情况下,它工作正常。在第二个,它工作但是控制台中有一个404错误:api/elements/NaN

我正在努力解决这个问题,但我无法检查id是否在网址中:

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;
                }
      );
  }
}

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

1 个答案:

答案 0 :(得分:4)

我正在我的一个项目中使用这个工作正常

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

我的路线就是这个

{ path: "home/:id", component: HomeComponent },