【发布时间】:2019-06-02 17:36:04
【问题描述】:
一个嵌套对象显示为 [object Object],所以我试图通过管道和地图投射它,但我没有得到任何地方。我已经尝试将模型作为类和接口,但没有帮助。有人可以告诉我我做错了什么吗?谢谢。
功能:
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”类型的参数。
【问题讨论】:
-
当你的返回类型是
Observable<Client[]>,你为什么返回Observable<Address>? -
另外,像这样的投射只是在愚弄 Typescript(这很好),但它实际上不会对返回的数据进行任何转换。
-
@xyz 现在我再次阅读它是有道理的。我已经盯着它太久了。主要目标是使 client.address 成为地址,以便我可以将其用于插值。有什么建议吗?
-
更改方法的返回类型:
getClients(customerId: number): Observable<Address> {},如果返回的只是地址而不是完整的客户端,也可能是方法名称。 -
否则,返回完整的客户端,getClients(customerId: number): Observable
{ ... return this.http.get (clientUrl) }。拿出你订阅的地址。 获得完整的客户似乎是一个更好的选择
标签: angular typescript angular7