javascript - 错误 [object%20Object] 将数据传递到 URL - Angular 中的 get 方法
问题描述
我在 Angular 8 中做我的项目,并面临使用 routerLink 传递数据的问题
这是我<tr>
的 routerLink
<tr *ngFor="let user of allData" [routerLink]="['client', user.clientId]">
ClientComponents 和我传递数据的想法
public clientData: any = this.route.params.subscribe(params => {
return params.clientId;
});
然后我将该数据传递给 ClientService
getMethodClientDetails(): void {
this.clientsService.getClientsDetails(this.clientData)
.subscribe(data => {
this.list = data;
},
error => this.errorMsg = error,
);
}
我的 clientService 函数看起来像:
getClientsDetails(data): Observable<any> {
return this.http.get<any>(URL + data)
.catch(this.errorHandler);
}
这是我的请求网址
/clients?clientId=[object%20Object]
而不是 clientId 我得到一个错误。我不知道是什么问题,我只传递一个值,而不是整个对象
当我只是在做 console.log 来检查时,一切看起来都正确。
public clientData: any = this.route.params.subscribe(params => {
console.log(params.clientId);
});
在控制台输出
16960
有人可以帮我解决这个问题吗?
解决方案
该subscribe()
方法调用返回一个 Subscription 对象,该对象具有一个unsubscribe()
方法,您可以调用该方法来停止接收通知。
您定义的是在消费者调用该subscribe()
方法时执行的订阅者函数。
您可以做的是创建一个在您的类中定义的属性public clientData: any;
,然后在订阅者函数中分配该返回值:
this.route.params.subscribe(params => {
this.clientData = params.clientId;
});
这就是为什么 console.log 没问题的原因,因为它被放在了订阅者函数中。
一些订阅只是被 Angular 本身取消订阅,但不是全部。取消订阅所有这些被认为是一种很好的做法。我为此使用subsink,它使生活更轻松。
推荐阅读
- vba - 刷新搜索结果
- google-chrome-arc - ARC 目前模拟什么版本的 Android?
- android - 如何修复“启动完成不是通过电话调用而是在模拟器上工作”
- typeorm - TypeORM:如何在 queryRunner 中运行 SELECT... FOR UPDATE?
- python-3.x - CSV 列中的逗号值 - 无效代码
- r - 如何将函数应用于几列中的每一列的子集?
- css - 如何在 div 悬停时隐藏视频?
- java - 如何从一个线程调用一个对象到另一个线程?
- objective-c - 如何设置导航控制器背景
- excel - 将两个不同工作簿中的两个范围粘贴到 Outlook 邮件正文中