我的api使用数字而不是字符串ID。如果我想这样做,则会收到错误消息:无法将类型字符串分配给类型编号。 param
函数仅将字符串作为id还是将其更改为数字?
这是我的代码:
user.service.ts
// get a user's profile
getUserDetails(id: number): Observable<any> {
return this.http.get(`${this.url}/users/${id}/`);
}
user.page.html
<ion-avatar class="user-image" slot="start" [routerLink]="['/', 'friendsdet', 'id']">
<ion-img src="assets/9.jpeg"> </ion-img>
</ion-avatar>
friendsdet.page.ts
information: null;
id: number;
...
ngOnInit() {
// Get the ID that was passed with the URL
this.activatedRoute.paramMap.subscribe(params => {
this.id = params.get('id');
});
// Get the information from the API
this.userService.getUserDetails(this.id).subscribe(result => {
this.information = result;
console.log(result);
});
}
app-routing.module.ts
...
{ path: 'friendsdet/:id',
loadChildren: './external-user/friendsdet/friendsdet.module#FriendsdetPageModule'
},
...
答案 0 :(得分:2)
URL中的值将始终为字符串。验证并将其转换为所需的内容是您代码的工作。根据您的情况,您可以使用parseInt()
函数来获取字符串并将其更改为数字。
您还应该验证输入是否确实是数字,可以使用正则表达式或Number.isInteger
函数。
ngOnInit() {
// Get the ID that was passed with the URL
this.activatedRoute.paramMap.subscribe(params => {
this.id = validateId(params.get('id'));
});
function validateId(id: any) : number {
if(!Number.isNumeric(id)){
console.error('number is not a number');
}
return parseInt(id);
}
答案 1 :(得分:-2)
让我们尝试 id:任何; ,而不是 id:number;