2017-06-13 39 views
1

我在爲ngOnInit()函數中的變量設置值時遇到了一些麻煩。我試圖在設置後看到控制檯中的變量,但我只收到「未定義」。如何使它工作?NgOnInit在angular2中設置的值

export class GalleryComponent implements OnInit { 

actualModelType: modelInterface[]; 
femaleModels: modelInterface[]; 

constructor(private _femaleModelsService: FemaleModelsService) { 
    this.actualModel = null; 
    this.clicked = false; 
} 

ngOnInit() { 
    this._femaleModelsService.getFemaleModels() 
     .subscribe(responseFemaleModelsData => this.femaleModels = responseFemaleModelsData); 


    this.actualModelType = this.femaleModels; 
    console.log(this.actualModelType, this.femaleModels); 
} 
} 
+0

訂閱是*異步*,這就是他們的全部意義。您可以訪問回調*中的數據*。 – jonrsharpe

+0

[Angular 2 - 直接從Observable返回數據]的可能副本(https://stackoverflow.com/questions/37867020/angular-2-return-data-directly-from-an-observable) – jonrsharpe

回答

1

您在這裏遇到的問題是您正在調用來自FemaleModelsService的數據,但您也正在分配您尚未擁有的值。

Observable和promise是異步的,所以你必須等待他們的迴應,以便操縱他們返回給你的東西。正如jonrsharpe所解釋的那樣,您必須在回調中獲取數據才能執行您要查找的內容。

試試這個:

ngOnInit() { 
    this._femaleModelsService.getFemaleModels().subscribe(
     responseFemaleModelsData => { 
      this.femaleModels = responseFemaleModelsData; 
      this.actualModelType = this.femaleModels; 
      console.log(this.actualModelType, this.femaleModels); 
     } 
    ); 
} 
+0

謝謝,但它劑量工作 – Kamczatka

+0

我編輯了代碼,請嘗試。如果它仍然不起作用,我需要更多關於你的代碼的細節(你的服務代碼和你所調用的數據) – nvkfr

+0

它的工作原理!謝謝! – Kamczatka