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

Como enviar mensagem após alterar uma foto?

Olá!

Fiz todo o curso. Está sendo passada a mensagem Foto incluída com sucesso através da classe MensagemCadastro, porém o mesmo não acontece na alteração de uma foto.

Qual a solução para esse problema?

2 respostas

Não há problema. Nenhuma mensagem é exibida na alteração. Se quiser fazer isso, crie um serviço (isso se vc já entrou nessa aula) com a propriedade msg. Passe a mensagem que deseja na alteração. Quando ele voltar para listagem, injete o serviço, extraia a mensagem e apague. Pode aplicar uma lógica de programação simples no método para assim que ler já apagar.

Sucesso e bom estudo.

solução!

Obrigado! Fiz as alterações devidas e funcionou.

No FotoService, defini duas novas variáveis e métodos getter:

mensagem: string;
alteracao: boolean = false;
// restante do código
getMensagem(): string {
    return this.mensagem;
}
isAlteracao(): boolean {
    return this.alteracao;
}
// fim de FotoService e declaração de MensagemCadastro

Em seu método cadastra, fiz estas alterações.

1) Atribuição de true para this.alteracao se foto._id estiver preenchido;

2) Uso do this.mensagem para definir a mensagem exibida, ao invés de inseri-la diretamente dentro da arrow function do map.

cadastra(foto: FotoComponent): Observable<MensagemCadastro> {
    if (foto._id) { // se tem id preenchido, quer alterar
        this.alteracao = true;

        this.mensagem = 'Foto alterada com sucesso';

        return this.http
                    .put(this.url + '/' + foto._id, JSON.stringify(foto), this.requestOptions)
                    .map(() => new MensagemCadastro(this.mensagem, false));
    } else { // se não tem id, quer inserir
        this.alteracao = false;

        this.mensagem = 'Foto incluída com sucesso';

        return this.http
                    .post(this.url, JSON.stringify(foto), this.requestOptions)
                    .map(() => new MensagemCadastro(this.mensagem, true));
    }
}

Em ListagemComponent, depois da atribuição do serviço no construtor:

if (this.service.getMensagem()) {
    if (this.service.getMensagem().length > 0) {
        if (this.service.isAlteracao()) {
            this.mensagem = this.service.getMensagem();
        }
    }
}