如何在 Angular 中传输/映射 Observable
How to pipe / map an Observable in Angular
一个嵌套对象显示为 [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) 'Address' 类型的参数不可分配给 'OperatorFunction<{}, Client[]>'.
类型的参数
问题在这里:
getClients(customerId: number): Observable<Client[]> {
您请求函数 return 以可观察的形式(客户端数组)但实际上您是 returning Observable of Address。
.pipe(map(client: Client) => client.address as Address);
这就是函数抛出此错误的原因。
将 Observable<Client[]>
替换为 Observable<Address[]>
1) 从您的 getClients() 方法中删除管道部分
2) 在订阅 getClients() 之前执行管道映射或创建另一种方法,该方法将仅使用从 getClients()
返回的可观察对象执行管道部分
mapToAddress(): Observable<Address[]> {
this.getClients.pipe(
map((clients: Client[]) => clients.map(client => client.address))
)
}
理解这一点很重要:当您在 .pipe() 中调用 .map() 方法时,在这种情况下您不会获得单个客户端,您会获得整个客户端数组,并将其推送到 Observable。因为您映射存储在 Observable 中的值 - 类型的值:。
你的 pipe-map 可以在一些 Observable 上工作,它发出一个 类型的客户端,而不是一个数组。
一个嵌套对象显示为 [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) 'Address' 类型的参数不可分配给 'OperatorFunction<{}, Client[]>'.
类型的参数问题在这里:
getClients(customerId: number): Observable<Client[]> {
您请求函数 return 以可观察的形式(客户端数组)但实际上您是 returning Observable of Address。
.pipe(map(client: Client) => client.address as Address);
这就是函数抛出此错误的原因。
将 Observable<Client[]>
替换为 Observable<Address[]>
1) 从您的 getClients() 方法中删除管道部分
2) 在订阅 getClients() 之前执行管道映射或创建另一种方法,该方法将仅使用从 getClients()
返回的可观察对象执行管道部分mapToAddress(): Observable<Address[]> {
this.getClients.pipe(
map((clients: Client[]) => clients.map(client => client.address))
)
}
理解这一点很重要:当您在 .pipe() 中调用 .map() 方法时,在这种情况下您不会获得单个客户端,您会获得整个客户端数组,并将其推送到 Observable。因为您映射存储在 Observable 中的值 - 类型的值:
你的 pipe-map 可以在一些 Observable 上工作,它发出一个