我正在尝试使用可观察性从激活的路线中获取prameter:id。当我在控制台上打印参数时,我会得到正确的:id值。但是this.id并非如此。我得到值NaN。 你能告诉我是什么问题吗
export class RecipeEditComponent implements OnInit {
id: number;
editMode = false;
constructor(private route: ActivatedRoute) { }
ngOnInit() {
this.route.params.subscribe(
(params: {id: string}) => {
this.id = +params.id;
console.log(this.id);
}
);
}
}
答案 0 :(得分:0)
我认为以下代码将在您的情况下起作用:
ngOnInit() {
this.heroes$ = this.route.paramMap.pipe(
switchMap(params => {
// (+) before `params.get()` turns the string into a number
this.selectedId = +params.get('id');
return this.service.getHeroes();
})
);
}
您也可以尝试以下方法:
this.sessionId = this.route
.queryParamMap
.pipe(map(params => params.get('id') || 'None'));
答案 1 :(得分:0)
更改为this.id = +params.get('id')
。
您应该使用方法get()
,因为它为给定参数id
返回单个值。
因为params
不是以id
为值的键,所以您得到一个错误。
export class RecipeEditComponent implements OnInit {
id: number;
editMode = false;
constructor(private route: ActivatedRoute) { }
ngOnInit() {
// paramMap replaces params in Angular v4+
this.route.paramMap.subscribe(params: ParamMap => {
this.id = +params.get('id');
console.log(this.id);
});
}
答案 2 :(得分:0)
像这样检索参数:
ngOnInit() {
this.route.params.subscribe(
(params: Params) => {
this.id = +params["id"];
console.log(this.id);
}
);
} }
答案 3 :(得分:0)
问题出在路由定义中: 放置:而不是::