2017-10-16 55 views
0

我有一个返回ApiResponse对象的服务,其中结果是Client对象的向量。该服务运行良好,数据正确接收。问题是,在我想要呈现信息的组件中,我需要过滤该服务的结果以在两个部分中显示它们,但由于滤波后的矢量始终为空,因此这是不可能的。另一方面,我不明白的是,为什么当我尝试在OnInit中为每个控制台显示矢量客户端时,它会将其返回为空,但如果它获取数据并显示它,则会在模板中使用它。筛选observable的响应并保存到本地变量

这是我的代码:

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, 
    ) { } 
} 

enter image description here

+1

“当我试图显示每个控制台的矢量客户在OnInit它返回它空” - >可能是因为你不知道getClients()是异步的。 – Carsten

+0

嗨@Carsten,除此之外,这是正确的,我明白,那么我该如何过滤这些结果呢?首先,过期向量填充了服务响应信息,然后我想使用填充信息的向量来创建两个新向量,但信息已经从该原始向量中过滤掉。这不可能吗?有什么办法可以控制这种异步吗? –

+0

console.log(next)中的数据是什么样的;? – Carsten

回答

0

哦哈哈,我刚刚发现你的错字:

你extraDays筛选并且您退回的财产是extrasDays。

现在享受你的自由时间:)

+1

现在我刚刚意识到我的错误。这个错误很有趣甚至可悲,但是谢谢你的时间。顺便说一句:我很安心,连续工作很多,这不是一个好主意。 –