我有一份关于我的服务级别的外部申请
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/