检查Angular route params ID失败,对于null或未定义的字符串

时间:2017-04-23 02:02:25

标签: angular typescript exception-handling

假设我转到其网址为 localhost:4200 / myComponent / id 的组件。无论ID是什么,它在组件视图中显示为字符串。

此代码从前一个组件获取ID参数([routerLink] =“['/ myComponent',id]”),并以这种方式提取内部使用的值:

myComponent.ts

getURLId(): void {

    this.route.params
      .map(
        params => params['id'])
          .subscribe(
            ((id) => this.assignID(id)),
            err => {
              this.successData = false;
              this.errorMessage = err
            });

  }

将“id”的值与NULL和UNDEFINED进行比较,目标处理错误。当访问 localhost:4200 / mycomponent / 故意将ID留空时,我的代码应该知道route.params具有未定义的“id”值并停止:

assignID(id: string): void {

    // THIS COMPARISON IS NOT CATCHING THE SCENARIO MENTIONED ABOVE
    if(id === null || id === undefined) {

      // DECLARE ERROR AND RAISE FLAG

    } else {

      // DO THINGS WITH "id" HERE...

    }
  }

问题是 localhost:4200 / mycomponent / 在比较时不会产生true(id === null或undefined)。

“id”值的Console.log输出 undefined

是什么给出了?

1 个答案:

答案 0 :(得分:1)

确保正确配置路线

{ path: 'mycomponent/:id', component: MyComponent },

要获得路线参数,我们不需要对其进行映射。我们可以直接订阅它。

this.route.params.subscribe(params => {
    this.assignID(params['id']);
});