2017-12-08 9 views
1

配列を持つObservableがあります。 Observableの外でその配列をフェッチして、別の配列とマージすることができます。Observableの外側に変数をフェッチする方法

this.builderService.getCommercialData() 
    .subscribe(
     data=>{ 
     this.commercialDetails = data; 
     this.commercialDetailsArray.push(this.commercialDetails); 

     console.log(this.commercialDetailsArray); 
     this.newcommercialDetailsArray = 
          this.commercialDetailsArray[0]; 
     const arrayLength = this.commercialDetailsArray.length; 
     if (arrayLength < 1) { 
      this.loaderStatus = false; 
      this.dataLoaded = false; 
      this.noData = true; 
      } else { 
      this.loaderStatus = false; 
      this.dataLoaded = true; 
      this.noData = false; 
      } 
     }, 
     error=>{}, 
    ); 

は、私はあなたがそれが 非同期コールバックですbeacauseとして実際のデータをサブスクライブの外の配列にアクセスすることはできませんnewcommercialDetailsArray

答えて

1

私は私がサービスからデータを取得し、basicResponseに入れてちょうど購読機能コンソールからデータを返してきた

ngOnInit() { 

     this._basicService.getBasic().subscribe(
     data => { 

      this.basicResponse = data; 

      console.log(this.basicResponse); 

      return this.basicResponse; 

    } 
) 
    } 

ファイルアンギュラ2

TSを使用してそれを行っていますそれが来たら、basicResponseをチェックする別のonclick関数に渡します。

save() 
    { 
     console.log(this.basicResponse) 
    } 

だけvalues.Itが私のために働いて返す

+1

ありがとう!それは本当にpheww働いた –

1

を取得したいとあなたは、同期方法でそれをアクセスしたいです。あなたが見る必要があるかもしれないデータを生成するために実行する必要がある2つの観測がある場合 には、以下の

myArray = []; 

    this.builderService.getCommercialData() 
    .subscribe(
     data=>{ 
     this.commercialDetails = data; 
     this.commercialDetailsArray.push(this.commercialDetails); 
     this.newcommercialDetailsArray = 
          this.commercialDetailsArray[0]; 

     // do the merge here ; 
     let myNewArray = 
     this.newcommercialDetailsArray.concat(this.myArray) ;  
     const arrayLength = this.commercialDetailsArray.length; 
     if (arrayLength < 1) { 
      this.loaderStatus = false; 
      this.dataLoaded = false; 
      this.noData = true; 
      } else { 
      this.loaderStatus = false; 
      this.dataLoaded = true; 
      this.noData = false; 
      } 
     }, 
     error=>{}, 
    ); 

を使用してサブスクライブアップデートの内側

を配列をマージすることができますobservables.forkJoin()

フォークでforkJoin()演算子は、私たちが観測 のリストを取得し、実行することができます参加mである。リスト内のオブザーバブルがすべて の値を出力すると、forkJoinはリスト内のオブザーバブルからのすべての解決された値の リストを含む1つのオブザーバブル値を出力します。

詳細はfork joinを例にとります。

+0

私はできない私はこのような理由のために、この1と合併することが、その配列を持つ別の観測可能を持っているので、私 –

+0

の外部に配列を取得したいのですが、質問にこれを記載しておき、答えを更新する –

関連する問題