こんにちは、Angular 5 アプリケーションがあります。undefined を返すサービス メソッドがあります。これが私がやろうとしていることです。cloneFlight という名前の関数があります。私は値 undefined を返す flightService.getCampaignsToClone(this.flight) を呼び出しています。
cloneFlight() {
combineLatest(
this.translateService.get('CONFIRM.CLONE_FLIGHT', { item: this.flight.name}),
this.flightsService.getCampaignsToClone(this.flight)
).subscribe( ([header, campaigns]) => {
this.cloneFlightService.openModal(header,this.flight,campaigns);
});
}
getCampaignsToClone のコードは次のとおりです。
getCampaignsToClone(flight: Flight){
let campaignStatusesIdArr: string[];
let campaigns: CampaignUnpaginated[] ;
this.campaignService.getStatuses().subscribe(
(data) => {
campaignStatusesIdArr = data.filter( x => x.code === (CampaignStatusCode.IN_PROGRESS ||
CampaignStatusCode.READY)).map( y => y.id);
}
);
let accountId: string = flight.campaign.account.id;
this.campaignService.getUnpaginatedCampaigns(
{
statuses: campaignStatusesIdArr,
accounts: accountId
}
).subscribe(data=>{
console.log(data);
campaigns = data;
});
return Observable.of(campaigns);
}
getCampaignsToClone で、Observable を返す http 呼び出し CampaignService.getStatuses() を作成しています。次に、それらのいくつかをフィルタリングしてから、別の http 呼び出しである getUnpaginatedCampaigns を呼び出します。メソッドが未定義を返さないように、このコードを記述する最良の方法は何か考えてみてください。おそらくrxjsオペレーターを利用していないと思います。誰かがそれを理解するのを手伝ってくれませんか。
どうもありがとうございます