-5

こんにちは、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オペレーターを利用していないと思います。誰かがそれを理解するのを手伝ってくれませんか。

どうもありがとうございます

4

1 に答える 1