我的服务课上有一份外购单。
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“总是为空。我知道角功是异步的。我如何期望对象"this.endereco“从返回返回到赋值后作为底线?
发布于 2018-10-12 23:58:36
相反,您应该修改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;
});
}发布于 2018-10-13 01:23:01
另一件事:如果json是已知的对象,就不需要翻译它的所有内容。创建一个endereco.model.ts并导入它。然后你可以用它作为一个对象。
this.serviceUtil.getEndereco(cep)
.pipe((response: Endereco) => {
let endereco = response;
return endereco;
})然后你的模型:
export class Endereco {
cep : string;
rua : string;
complemento: string;
}https://stackoverflow.com/questions/52788308
复制相似问题