javascript-无法读取未定义的属性’propostas_realizadas’-Angular 2
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-无法读取未定义的属性’propostas_realizadas’-Angular 2,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3652字,纯文字阅读大概需要6分钟。
内容图文
![javascript-无法读取未定义的属性’propostas_realizadas’-Angular 2](/upload/InfoBanner/zyjiaocheng/691/98d04246e6274325a4f6f89de2c677a8.jpg)
我在Angular 2中有一个应用程序,在其中尝试在控制台上打印一些数据“ console.log(this.disputa.propostas_realizadas)”,但是当我尝试打印它时,却收到此消息:
Cannot read property ‘propostas_realizadas’ of undefined
有趣的是(或不太有趣的)事情是我仅在ngOnInit()中得到此消息,如果我将代码移至其他函数,它将很好地工作,但我真的需要在ngOnInit()中使用此消息.
import { Component, OnInit, OnChanges } from '@angular/core';
import {Http, Headers} from '@angular/http';
import {ActivatedRoute} from '@angular/router';
import {DisputaComponent} from '../../disputas/disputas.component';
import {DisputaService} from '../../disputas/disputas.service';
import {DisputaPropostaService} from './disputas-proposta.service';
import {disputaPropostas} from './proposta.interface';
import {disputaInterface} from '../disputa.interface';
import {Routes, RouterModule, Router} from '@angular/router';
@Component({
moduleId: module.id,
selector: 'detalhes',
templateUrl: `disputas-proposta.component.html`,
providers: [DisputaPropostaService]
})
export class DisputaPropostaComponent implements OnInit, OnChanges {
disputa: any;
inputProposta = false;
proposta:disputaPropostas = {proposta_usuario: null, proposta_cliente: null}
constructor(private service: DisputaService, private route:ActivatedRoute,
private router:Router, private propostaService:DisputaPropostaService){}
ngOnInit() : void{
this.route.params.subscribe(params =>{
let id = params['id'];
this.service
.buscaPorId(id)
.subscribe(disputa => {
this.disputa = disputa;
console.log(disputa);
},
erro => console.log(erro));
})
console.log(this.disputa.propostas_realizadas);
}
ngOnChanges(): void{
console.log("changes");
}
recusaProposta(){
if (this.disputa.status.status_nome == "Iniciar Negocia??o"){
this.propostaService.atualizaDisputa(this.disputa)
.subscribe(
res => this.disputa.status.status_nome = "Continuar Negocia??o",
error=> console.log(error)
);
}
this.inputProposta = true;
this.propostaService.atualizaDisputa(this.disputa)
.subscribe(
res => this.disputa.propostas_realizadas++,
error => console.log(error)
);
if ((this.disputa.propostas_realizadas) == ((this.disputa.maximo_propostas)-1))
alert("Ultima proposta")
console.log("recusa", this.disputa.propostas_realizadas)
}
enviaProposta(){
if ((this.disputa.propostas_realizadas) == (this.disputa.maximo_propostas))
this.router.navigate(['negociacao-concluida/'+this.disputa.id]);
if ((this.disputa.propostas_realizadas) == ((this.disputa.maximo_propostas)-1))
alert("Ultima proposta")
if (this.disputa.proposta_inicial > this.proposta.proposta_usuario ){
alert("Sua proposta n?o pode ser inferior à oferida pela ");
console.log("numero menor");
}else{
console.log("numero maior");
this.inputProposta = false;
this.propostaService.atualizaDisputa(this.disputa)
.subscribe(
res => this.disputa.propostas_realizadas++,
error => console.log(error)
);
console.log(this.proposta.proposta_usuario, this.disputa);
console.log("envia", this.disputa.propostas_realizadas)
}
}
}
有人能帮我吗?提前致谢 :)
解决方法:
您正在控制台上分配响应之前记录响应,这是异步操作.
ngOnInit() : void{
this.route.params.subscribe(params =>{
let id = params['id'];
this.service
.buscaPorId(id)
.subscribe(disputa => {
// executed sometimes later...
this.disputa = disputa;
console.log(disputa);
},
erro => console.log(erro));
})
// executed first
console.log(this.disputa.propostas_realizadas);
}
注意上面代码中的注释.为了使您的数据可用,您需要在订阅中进行操作,因此以下各项应该有效:
ngOnInit() : void{
this.route.params.subscribe(params =>{
let id = params['id'];
this.service
.buscaPorId(id)
.subscribe(disputa => {
this.disputa = disputa;
console.log(disputa);
// here!
console.log(this.disputa.propostas_realizadas);
},
erro => console.log(erro));
})
}
内容总结
以上是互联网集市为您收集整理的javascript-无法读取未定义的属性’propostas_realizadas’-Angular 2全部内容,希望文章能够帮你解决javascript-无法读取未定义的属性’propostas_realizadas’-Angular 2所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。