导航后 Angular 显示小吃栏

mik*_*927 4 angular angular-router

我有两个组件。在成功的服务器响应的第一个中,我想要执行以下操作:

this.router.navigate(['']);
this.snackBarMessage = 'Successfully submitted';
Run Code Online (Sandbox Code Playgroud)

然后页面被重定向到另一个组件,我想在那里显示 SnackBarMessage 消息,例如 (ngOnInit())

像这样的东西:

this.snackBarService.openSnackBar(snackBarMessage, 'Close', 9999999);
Run Code Online (Sandbox Code Playgroud)

我的小吃吧服务:

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 });
  }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?导航后如何传递snackBarMessage到另一个组件?

Jul*_*bos 7

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

this.router.navigate(['']).then((navigated: boolean) => {
    if(navigated) {
      this.snackBarService.openSnackBar(snackBarMessage, 'Close', 9999999);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个关于 450 个组件的问题,而是关于 2 个组件的问题。 (3认同)
  • 同样,您正在讨论 ATM 不存在的问题的解决方案...... (2认同)