一个嵌套的对象显示为[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 <{},Client []>”的参数。
答案 0 :(得分:3)
1)从getClients()方法中删除管道部分
2)在订阅getClients()之前创建管道映射,或者创建另一个方法,该方法仅处理从getClients()返回的可观察对象的管道部分。
mapToAddress(): Observable<Address[]> {
this.getClients.pipe(
map((clients: Client[]) => clients.map(client => client.address))
)
}
了解这一点很重要:当您在.pipe()中调用.map()方法时,在这种情况下您没有得到一个客户端,而是获得了整个客户端数组,并被推送到Observable。因为您映射了值,所以这些值存储在Observable中-类型为
您的管道映射将在某些Observable上工作,它会发出
答案 1 :(得分:0)
问题在这里:
Assets
Content
titleMap
wood_titleset.tsx
您请求函数以observable(客户端数组)的形式返回,但实际上您是在返回Address的Observable。
getClients(customerId: number): Observable<Client[]> {
这就是该函数引发此错误的原因。 将Observable替换为Observable
希望一切顺利,一切顺利!