角度范围问题

时间:2019-03-01 06:33:09

标签: angular typescript scoping

我有一个返回数组的服务。

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 :(得分:0)

您的代码本身就是正确的。这纯粹是时间问题。问题是预订之外的第二个console.log(this.usStates);立即执行-在这种情况下,this.usStates数组仍然为空。基本上发生了以下情况:

enter image description here

因此,在订阅功能之外,您只需要检查值的存在即可。像这样:

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

或者,如果您要绑定到数据,则需要使用*ngIf或安全的导航操作符(?)。