Problemas com MessageService, ToastMessage (PrimeNG), não aparecem quando há redirecionamento

0 respostas
angular
M

Boa tarde,
estou tendo um problema quando ao tentar usar o toast do PrimeNG, quando não há redirecionamento, ele funciona normalmente, porém quando preciso redirecionar para outra página, o mesmo já não aparece.

base-resource.form.component.ts

export abstract class BaseResourceFormComponent implements OnInit, AfterContentChecked {

currentAction: string;

messageSuccess: ToastMessage = { severity: ‘success’, summary: ‘Success’, detail: ‘Message Content’ } as ToastMessage;

messageWarn: ToastMessage = { severity: ‘warn’, summary: ‘Success’, detail: ‘Message Content’ } as ToastMessage;

messageinfo: ToastMessage = { severity: ‘info’, summary: ‘Success’, detail: ‘Message Content’ } as ToastMessage;

messageError: ToastMessage = { severity: ‘error’, summary: ‘Success’, detail: ‘Message Content’ } as ToastMessage;

messageService: MessageService;
constructor(

protected injector: Injector,

) {

this.messageService = this.injector.get(MessageService);

}
protected setCurrentAction() {

if (this.route.snapshot.url[0].path === ‘new’) {

this.currentAction = ‘new’;

} else {

this.currentAction = ‘edit’;

}

}
protected salvarResource() {

this.messageSuccess = { severity: ‘success’, summary: ‘Salvo Com Sucesso’, detail: ‘Salvo Com Sucesso’ }

this.resourceService.salvar(this.resource).subscribe(

resource => this.actionsForSucess(resource),

error => this.actionForError(error),

);

}
protected actionsForSucess(resource: T): void {

let baseComponentPath = ‘’;

if (this.currentAction === ‘new’) {

baseComponentPath = this.router.url;

} else {

const posicoes: string[] = this.router.url.split(’/’);

for (let i = 1; i < posicoes.length - 2; i++) {

baseComponentPath = baseComponentPath + ‘/’ + posicoes[i];

}

baseComponentPath = baseComponentPath + ‘/new’;

}

this.router.navigateByUrl(’/’, { skipLocationChange: true }).then(

() => this.router.navigateByUrl(baseComponentPath));

this.messageService.add(this.messageSuccess);

}

*Deixei só a parte do código que usa o MessageService, se não ia ficar muito grande.
*Esses if’s no actionForSucess são para manipular a URL e redirecionar o usuário para um novo cadastro.
*Nessa parte, caso o usuário esteja na página de novo cadastro, o toast funciona (porque redireciona para a mesma URL), agora se ele estiver na de edição, o toast não aparece.

Criado 3 de novembro de 2020
Respostas 0
Participantes 1