Ton*_*ong 4 typescript angular angular7
嵌套的对象显示为[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);
}
Run Code Online (Sandbox Code Playgroud)
型号:
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;
}
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:错误TS2345(TS)类型“地址”的参数不能分配给类型“ OperatorFunction <{},Client []>”的参数。
小智 5
1)从getClients()方法中删除管道部分
2)在订阅getClients()之前创建管道映射或创建另一个方法,该方法将仅使用从getClients()返回的可观察对象进行管道部分
mapToAddress(): Observable<Address[]> {
this.getClients.pipe(
map((clients: Client[]) => clients.map(client => client.address))
)
}
Run Code Online (Sandbox Code Playgroud)
了解这一点很重要:在.pipe()中调用.map()方法时,在这种情况下您没有得到一个客户端,而是获得了整个客户端数组,并被推送到Observable。因为您映射了值,所以这些值存储在Observable中-类型为<Client []>的值。
您的管道图将在某些Observable上工作,它会发出<Client>类型的单个客户端,而不是数组。
| 归档时间: |
|
| 查看次数: |
5200 次 |
| 最近记录: |