【发布时间】:2017-10-16 15:42:25
【问题描述】:
我有一个返回 ApiResponse 对象的服务,其结果是客户端对象的向量。服务运行良好,数据接收正确。问题是在我想要呈现信息的组件中,我需要过滤该服务的结果以在两个部分中显示它们,但这是不可能的,因为过滤后的向量总是空的。另一方面,我不明白的是,为什么当我尝试在 OnInit 中显示每个控制台的矢量客户端时,它会返回空,但如果它获取数据并显示它,我会在模板中使用它。
这是我的代码:
export class PartnersExpirationsComponent implements OnInit {
expirations: Client[] = [];
expirationsWithoutDays: Client[] = [];
expirationsWithDays: Client[] = [];
constructor(
private partnersExpirationsService: PartnersExpirationsService
) { }
ngOnInit() {
this.getData();
}
private getData(): void {
this.partnersExpirationsService.getClients()
.subscribe(
next => {
console.log(next);
this.expirations = next.results;
this.expirationsWithoutDays = this.expirations.filter(client => {
return client.extraDays === false;
});
this.expirationsWithDays = this.expirations.filter(client => {
return client.extraDays === true;
});
},
error => this.handleError
);
}
}
我正在经历而我没有意识到的事情?
编辑:这是通过控制台打印时返回下一个的模型:
export interface IARClient {
info: {
results: number,
version: string,
};
results: Client[];
}
export class Client {
constructor(
public name: string,
public lastName: string,
public numberDni: number,
public email: string,
public street: string,
public phone: number,
public alternatePhone: number,
public birthdate: Date,
public dateRegister: Date,
public balance: number,
public extraDays: boolean,
public district: District,
public state: State,
public gender: Gender,
public associationXClient: AssociationXClient,
public id?: number,
) { }
}
【问题讨论】:
-
“当我尝试在 OnInit 中显示每个控制台的矢量客户端时,它返回为空”-> 可能是因为您不知道 getClients() 是异步的。
-
嗨@Carsten,除此之外,这是正确的,我明白,我该怎么做才能过滤这些结果?首先,过期向量填充了服务响应信息,然后我想使用填充信息的向量创建两个新向量,但信息已经从这个原始向量中过滤出来。这不可能吗?有没有办法控制这种异步?
-
console.log(next); 中的数据是什么样的?
-
答案返回一个对象,其中包含它必须返回的所有数据。我将更新原始问题以添加模型。
-
@Carsten,我真的不明白为什么我不能执行这个简单的操作。我记得在其他地方执行了完全相同的操作并获得了正确的结果。任何帮助都会非常棒,因为我已经与这个问题作斗争了几个小时。