javascript - 等待 Angular 5 方法

标签 javascript jquery angular

我有一份关于我的服务级别的外部申请

public getEndereco(cep: string){
        return this.http.get("http://viacep.com.br/ws/" + cep + "/json",{
            responseType: 'text'
        });
    }

之后,我捕获返回的 json 并将其放入我的 Util 类的对象中

public getEndereco(cep: string): Endereco{
        let endereco = new Endereco();
        this.serviceUtil.getEndereco(cep)
          .subscribe((response)=>{
            let json = JSON.parse(response);
            endereco.cep = json.cep;
            endereco.rua = json.logradouro;
            endereco.complemento = json.complemento;
            endereco.bairro = json.bairro;
            endereco.cidade = json.localidade;
            endereco.estado = this.buscarEstadoSigla(json.uf);
          },(erro)=>{
            console.log(erro);
          });

          return endereco;
      }

在我的视觉层中,我得到这个物体并做出这个:

private getEndereco(){
    this.endereco = this.util.getEndereco(this.endereco.cep);
    this.estado = this.endereco.estado;
  }

但“this.endereco.estado”始终为空。 我知道异步的 Angular 工作。 我如何期望对象“this.endereco”从返回到分配后作为底线返回?

最佳答案

您应该修改 getEndereco 以返回 Observable,如下所示:

import { map } from 'rxjs/operators';

public getEndereco(cep: string): Endereco{     
    return this.serviceUtil.getEndereco(cep)
      .pipe(map((response)=>{
        let endereco = new Endereco();
        let json = JSON.parse(response);
        endereco.cep = json.cep;
        endereco.rua = json.logradouro;
        endereco.complemento = json.complemento;
        endereco.bairro = json.bairro;
        endereco.cidade = json.localidade;
        endereco.estado = this.buscarEstadoSigla(json.uf);
        return endereco;
      }));
  }

然后您可以订阅,如下所示:

private getEndereco(){
    this.util.getEndereco(this.endereco.cep).subscribe(endereco => {
        this.endereco = endereco;
        this.estado = this.endereco.estado;
    });

}

关于javascript - 等待 Angular 5 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788308/

相关文章:

javascript - jQuery 错误 : TypeError: 'undefined' is not a function

javascript - Random() 返回 1 或 -1

node.js - 如何调试 TSLint 错误?

javascript - 如何禁用全日历中的按钮冒泡?

javascript - 在 angular2/typescript 中提交之前限制双向绑定(bind)

angular - ng2 日期管道格式在 karma 测试中触发 'No locale data' 错误

Javascript:将值归因于 id 这段代码有什么问题?

javascript - jQuery Validate - 从父 Div 中删除错误类

javascript - jQuery Div 切换问题

javascript - 通过 jQuery 在某个滚动级别更改 CSS 不起作用