Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Objeto Undefined

Olá pessoal,

Tenho um component que vai até o service para obter os dados de um membro pelo id. O problema é que, após o subscribe, o membro, mesmo eu associando o resultado a minha variável membro, vem como undefined. Não sei se tenho que utilizar alguma função do Rxjs.

Segue o código:

import { OnInit, Component } from "@angular/core";
import { FormGroup } from "@angular/forms";
import { ActivatedRoute } from "@angular/router";
import { MembroService } from "./service/membro.service";
import { Membro } from "./model/membro";
import { MatSnackBar } from "@angular/material";

@Component({
    templateUrl: './altera-cadastro-membro.component.html'
})
export class AlteraCadastroMembroComponent implements OnInit {
    membro: Membro;
    identificacaoFormGroup: FormGroup;
    constructor(private route: ActivatedRoute,
        private membroService: MembroService,
        private snackBar: MatSnackBar) {

    }
    ngOnInit() {
        this.membroService.obterPor(this.route.snapshot.params.idMembro)
            .subscribe(
                (resposta) => {
                    this.membro = resposta
                },
                erro => {
                    this.snackBar.open('Erro ao recuperar os dados.', '', {
                        duration: 4000,
                    });
                }
            );
        console.log(this.membro.nome);
    }

}

Coloquei o breakpoint e essa variável membro está indefinida, mesmo os dados vindos do servidor corretamente.

Alguém tem alguma dica?

Obrigado.

1 resposta
solução!

Boa tarde, Ivan! Como vai?

Isso está acontecendo pois vc está fazendo o console.log(this.membro.nome) fora do subscribe(). Como a execução do código é assíncrona, não há garantias de seu valor já ter chegado do servidor no momento que vc está fazendo o console.log(). Portanto, a solução é passar o console.log() para dentro do subscribe().

Pegou a ideia? Qualquer coisa é só falar!

Aproveito para te desejar um excelente ano de 2019, muito estudo e sucesso!

Grande abraço, meu aluno!