2017-10-16 21 views
0

私はApiResponseオブジェクトを返すサービスを持っていますが、結果はClientオブジェクトのベクトルです。サービスは正常に動作し、データは正しく受信されます。問題は、情報をレンダリングするコンポーネントでは、そのサービスの結果を2つのセクションで表示するためにフィルタリングする必要がありますが、フィルタリングされたベクトルは常に空であるため、これは不可能です。一方、私が理解していないことは、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 
    ); 
    } 
} 

何か?

EDIT:これは、コンソールでそれを印刷するとき、次のいずれかを返すモデルである:

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

をお楽しみください - >あなたはgetClients()は非同期であることを知らないからでしょう。 – Carsten

+0

こんにちは@Carsten、それを超えて、正しいと私は理解して、どのようにそれらの結果をフィルタリングすることができますか?まず最初に、有効期限ベクトルにサービス応答情報が埋め込まれています。次に、情報を埋め込んで2つの新しいベクトルを作成するが、この元のベクトルから情報を既にフィルタリングしたベクトルを使用したいとします。これは不可能ですか?そのような非同期を制御する方法はありますか? –

+0

console.log(next);のデータはどのように見えますか? – Carsten

答えて

0

笑ああ、私はちょうどあなたのタイプミスを見つけました:

あなたはextraDaysでフィルタ返されたプロパティはextrasDaysです。 「私はのOnInitそれを返すには、コンソールあたりのベクトルのクライアントを表示しようとすると、それは空の」

は今、あなたの自由な時間:)

+1

今私は自分の間違いを認識しました。面白かったし、この悲しみさえも哀れですが、あなたの時間のおかげで、私を助けてくれてありがとう! Btw:私は一生懸命働くことに安心しました。それは良い考えではありません。 –

関連する問題