Angular 导航后角度显示快捷键

Angular 导航后角度显示快捷键,angular,angular-router,Angular,Angular Router,我有两个部分。在第一个关于成功服务器的响应中,我希望执行以下操作: this.router.navigate(['']); this.snackBarMessage = 'Successfully submitted'; 然后页面被重定向到另一个组件,我想在那里显示snackBarMessage消息,例如(ngOnInit()) 诸如此类: this.snackBarService.openSnackBar(snackBarMessage, 'Close', 9999999); 我的Snac

我有两个部分。在第一个关于成功服务器的响应中,我希望执行以下操作:

this.router.navigate(['']);
this.snackBarMessage = 'Successfully submitted';
然后页面被重定向到另一个组件,我想在那里显示snackBarMessage消息,例如(ngOnInit())

诸如此类:

this.snackBarService.openSnackBar(snackBarMessage, 'Close', 9999999);
我的SnackBar服务:

import { Injectable } from '@angular/core';
import { MatSnackBar } from '@angular/material';

@Injectable({
  providedIn: 'root'
})
export class SnackBarService {

  constructor(private matSnackBar: MatSnackBar) { }

  openSnackBar(message: string, action: string, duration?: number) {
    this.matSnackBar.open(message, action, { duration });
  }
}
我怎样才能做到这一点?导航后如何将snackBarMessage传递给另一个组件?

此.router.navigate([``])
返回您可以订阅的承诺。此承诺将在导航成功后执行。请参阅此以了解更多信息

this.router.navigate([''])。然后((navigated:boolean)=>{
如果(导航){
这个.snackBarService.openSnackBar(snackBarMessage,'Close',999999);
}
});

您可以显示消息,然后导航:

使用afterdisposed()方法:


在最后一个组件上,此消息是否会更改或始终显示成功消息?消息应可调整。最后一个组件应该接收作为参数接收的内容。此外,此页面并不总是显示snackBar-实际上它是登录页面。您可以使用或,甚至可以同时使用两者。您希望如何显示消息?我会在app root的模板中放置一个span或任何您希望消息看起来像的东西,并绑定该span,例如
{{globals.message}
。消息应该是一个全局变量,您可以通过依赖项注入在组件中访问。@schlonzo这是Angle Material的一个陷阱:但它在源组件中,而不是在目标组件中。@Maryannah加载目标组件时将显示它,这是OP想要的:“我想在这里展示snackBarMessage消息,例如(ngOnInit())”这不是一个关于450个组件的问题,而是2。@Maryannah考虑到一个有450个组件的场景,其中snackbar的消息取决于源组件而不是目标,仍然需要做“一些事情”“用于每个组件,以便设置该消息。必须调用1函数似乎并不是一件糟糕的“事情”。同样,您正在讨论一个ATM不存在的问题的解决方案。。。
this.snackBar.open('msg', 'close', {
                  duration: 2000
                }).afterDismissed().subscribe(()=>{
                  this.router.navigate(['']);
                });