如何传递数字ID而不是字符串ID?

时间:2019-11-08 15:11:02

标签: javascript angular typescript ionic-framework

我的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'
      },
    ...

2 个答案:

答案 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;