Gostei da dica. Implementei aqui e funcionou certinho.
Quando o professor implementou a mensagem de validação, eu pensei na hora que poderia ser uma mensagem "vermelha", até implementei, mas com a utilização da interface fica mais bonito.
Eu deixei minha /view.ts assim:
import { View } from "./view.js";
enum MessageType {
INFO = "info",
SUCCESS = "success",
DANGER = "danger",
WARNING = "warning",
}
export interface Mensagem {
tipo: MessageType;
texto: string;
}
export class MensagemView extends View<Mensagem> {
protected template(model: Mensagem): string {
return `
<p class="alert alert-${model.tipo}">${model.texto}</p>
`;
}
public updateError(message: string): void {
this.updateMessage(MessageType.DANGER, message);
}
public updateSuccess(message: string): void {
this.updateMessage(MessageType.SUCCESS, message);
}
private updateMessage(type: MessageType, message: string): void {
const mensagem: Mensagem = {
tipo: type,
texto: message,
};
this.update(mensagem);
}
}
E no controller eu chamo de duas formas:
Quando for mensagem de erro/validação:
this.mensagemView.updateError("Apenas negociações em dias úteis são aceitas.");
Quando for mensagem de sucesso:
this.mensagemView.updateSuccess("Negociação adicionada com sucesso.");
Valeu pela dica, acrescentei mais algumas coisas, caso seja útil.