обзор вопросов в угловой - PullRequest
0 голосов
/ 01 марта 2019

У меня есть служба, которая возвращает массив.

main(){ 
    this.addressService.getState().subscribe( (data:any)=>{
          this.usStates = data;
          if(this.usStates.length===0) {
            this.notificationService.showErrorNotification('Unable to get states');
console.log(this.usStates); //length of array is 10
          }
        });
console.log(this.usStates); //empty array
}

Как я могу получить обновленное значение this.usStates вне области обратного вызова?

1 Ответ

0 голосов
/ 01 марта 2019

Ваш код сам по себе правильный.Это чисто вопрос времени.Проблема в том, что второй console.log(this.usStates);, находящийся вне подписки, выполняется немедленно - и в этом случае массив this.usStates все еще пуст.В основном происходит следующее:

enter image description here

Таким образом, вне функции подписки, вам просто нужно проверить наличие значения.Примерно так:

if (this.usStates.length>0) { console.log(...) }

Или, если вы привязываетесь к данным, вам нужно использовать *ngIf или оператор безопасной навигации (?).

...