私は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,
) { }
}
をお楽しみください - >あなたはgetClients()は非同期であることを知らないからでしょう。 – Carsten
こんにちは@Carsten、それを超えて、正しいと私は理解して、どのようにそれらの結果をフィルタリングすることができますか?まず最初に、有効期限ベクトルにサービス応答情報が埋め込まれています。次に、情報を埋め込んで2つの新しいベクトルを作成するが、この元のベクトルから情報を既にフィルタリングしたベクトルを使用したいとします。これは不可能ですか?そのような非同期を制御する方法はありますか? –
console.log(next);のデータはどのように見えますか? – Carsten