gpt4 book ai didi

angular - 如何在 Angular 中管道/映射 Observable

转载 作者:太空狗 更新时间:2023-10-29 18:17:49 25 4
gpt4 key购买 nike

嵌套对象显示为 [object Object],因此我试图通过管道和映射将其转换,但我没有得到任何结果。我已经尝试将模型作为类和接口(interface),但没有帮助。有人可以告诉我我做错了什么吗?谢谢。

函数:

  getClients(customerId: number): Observable<Client[]> {
let clientUrl = 'SOME_URL';
return this.http.get<Client[]>(clientUrl)
.pipe(map(client: Client) => client.address as Address);
}

模型:

import { Address } from './address.model';

export class Client{
id: number;
name: string;
accountNumber: string;
addressId: number;
phoneNumber: string;
address: Address;
}


export class Address{
id: number;
name: string;
addressLine1: string;
addressLine2: string;
city: string;
postalCode: string;
}

我收到错误:错误 TS2345 (TS)“地址”类型的参数不可分配给“OperatorFunction<{}, Client[]>”类型的参数。

最佳答案

1) 从 getClients() 方法中删除管道部分

2) 在订阅 getClients() 之前执行管道映射或创建另一个方法,该方法将仅使用从 getClients() 返回的可观察对象执行管道部分

mapToAddress(): Observable<Address[]> {
this.getClients.pipe(
map((clients: Client[]) => clients.map(client => client.address))
)
}

理解这一点很重要:当你在 .pipe() 中调用 .map() 方法时,在这种情况下你不会得到一个单一的客户端,你会得到整个客户端数组,推送到 Observable。因为您映射存储在 Observable 中的值 - 类型的值:

您的管道映射将在某些 Observable 上工作,它会发出 类型的单个客户端,而不是数组。

关于angular - 如何在 Angular 中管道/映射 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54084815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com