Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Cannot Read Property 'enviado' of undefined

Lista-agendamentos.ts

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, AlertController } from 'ionic-angular';
import { Agendamento } from '../../modelos/agendamento';
import { AgendamentoDaoProvider } from '../../providers/agendamento-dao/agendamento-dao';
import { AgendamentosServiceProvider } from '../../providers/agendamentos-service/agendamentos-service';


@IonicPage()
@Component({
  selector: 'page-lista-agendamentos',
  templateUrl: 'lista-agendamentos.html',
})
export class ListaAgendamentosPage {
 agendamentos: Agendamento [];
  _alerta: any;

  constructor(public navCtrl: NavController, 
     public navParams: NavParams,
     private _agendamentosService:AgendamentosServiceProvider,
     private _agendamentoDao: AgendamentoDaoProvider,
     private _alertCtrl: AlertController ){
    }

    ionViewDidLoad(){
      this._agendamentoDao .listaTodos()
      .subscribe(
        (agendamentos: Agendamento[]) => {
          this.agendamentos = agendamentos;
         }
      )
    }
    reenvia(agendamento: Agendamento){
       this._alerta =  this._alertCtrl.create({
       title: 'Aviso',
       buttons:[
         {text: 'OK',

         }
       ]
     });

     let mensagem ='';
     this._agendamentosService.agenda(agendamento)
         .mergeMap((valor) =>{
           let Observable  =  this._agendamentoDao.salva(agendamento);
            if (valor instanceof Error){
              throw valor;
            }
            return Observable;
          })
          .finally(
            ()=> {
             this._alerta.setSubTitle(mensagem);
             this._alerta.present();
            }
          )
          .subscribe(
           () =>mensagem=  'Agendamento reenviado!',
           (err: Error ) => mensagem= err.message
           );
    }      
}
3 respostas

Boa noite, Bruno! Como vai?

Vc está tentando chamar a propriedade enviado em algum ponto do seu código a partir de uma variável que está com o valor undefined. Só que nesse código que vc postou em nenhum momento vc tenta acessar qualquer propriedade chamada enviado. Vc pode colar aqui o código exato onde vc está fazendo isso e onde o erro se origina? Daí eu tento te ajudar!

Grande abraço e bons estudos, meu aluno!

opa segue o código: lista-agendamentos.html


<ion-header>

  <ion-navbar>
    <ion-title>Agendamentos</ion-title>
  </ion-navbar>

</ion-header>

<ion-content padding>
  <ion-list>
      <ion-item [class.falha]="!agendamento.enviado" *ngFor= "let agendamento of agendamentos">
        {{agendamento.nomeCliente}} 
        </ion-item>
        <ion-item>
         {{agendamento.modeloCarro}}
         <button ion-button  item-end icon-only clear 
           *ngIf = "!agendamento.enviado"
             (click)="reenvia(agendamento)"  >
          <ion-icon name="refresh"></ion-icon>
        </button>  

      </ion-item>
  </ion-list>


</ion-content>
solução!

Opa, Bruno! Veja que nesse seu arquivo lista-agendamentos.html vc declarou o *ngFor no primeiro ion-item. Mas está usando a variável agendamento criada no *ngFor no segundo ion-item, já após o fechamento do primeiro.

Ou seja, pra que seu código funcione corretamente, todos os lugares onde vc faz referência à variável agendamento devem estar dentro do primeiro ion-item.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!