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?
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?
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.
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();
}
}
}