2017-12-08 7 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

나는 내가 서비스에서 데이터를 얻을 수 있습니다

ngOnInit() { 

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

      this.basicResponse = data; 

      console.log(this.basicResponse); 

      return this.basicResponse; 

    } 
) 
    } 
파일 및 basicResponse에 넣고 단지 기능 콘솔을 구독에서 데이터를 반환 각도 2

TS를 사용하여 수행 한 그것은 다른 onclick 함수에 오는 경우 기본 응답을 확인합니다.

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

그냥 values.It이 나를 위해 일한 돌아

+1

감사합니다! 그것은 정말 일했습니다. –

1

를 가져하려는 당신은 동기 방식으로 액세스하려는. 사용하여 구독 안에 당신 배열을 병합 할 수 있습니다 다음

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() 연산자는 우리가 Observables은 의 목록을 타고을 실행할 수 있습니다 가입 m 병렬로. 목록의 Observable이 모두 값을 내면 forkJoin은 목록의 Observables에서 확인 된 모든 값의 목록을 포함하는 단일 Observable 값을 방출합니다.

자세한 예제는 fork join입니다.

+0

내가 할 수없는 내가 인해 이유로,이 합병 될 그 배열을 가지고있는 또 다른 관찰을 가지고 있기 때문에 내가 –

+0

외부의 배열을 가져 오려면이 질문에 언급 했어야합니다. 응답을 업데이트하십시오 –