假设我转到其网址为 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 。
是什么给出了?
答案 0 :(得分:1)
确保正确配置路线
{ path: 'mycomponent/:id', component: MyComponent },
要获得路线参数,我们不需要对其进行映射。我们可以直接订阅它。
this.route.params.subscribe(params => {
this.assignID(params['id']);
});