Angular 角度getCurrentNavigation().extras

Angular 角度getCurrentNavigation().extras,angular,typescript,Angular,Typescript,我正在从我的组件随路由发送数据,我想在另一个组件的构造函数中检索数据: 发送数据: this.router.navigate(['/coaches/list'], { state: { updateMessage: this.processMessage }, replaceUrl: true }); if (this.router.getCurrentNavigation().extras?.state != null) { thi

我正在从我的组件随路由发送数据,我想在另一个组件的构造函数中检索数据:

发送数据:

this.router.navigate(['/coaches/list'], {
          state: { updateMessage: this.processMessage },
          replaceUrl: true
        });
if (this.router.getCurrentNavigation().extras?.state != null) {
  this.successMessage = this.router.getCurrentNavigation().extras.state;
}
在构造函数中检索数据:

this.router.navigate(['/coaches/list'], {
          state: { updateMessage: this.processMessage },
          replaceUrl: true
        });
if (this.router.getCurrentNavigation().extras?.state != null) {
  this.successMessage = this.router.getCurrentNavigation().extras.state;
}
我遇到的问题是,第一次extras.state是未定义的,没有任何数据。只有在关闭其他组件中的对话框按钮时,才会填充此变量


请告诉我如何解决此问题,因为我在初始加载时遇到了错误类型错误:无法读取null的属性“extras”。

如果getCurrentNavigation为null,我可以通过检查来解决此问题:

    constructor(
    private fb: FormBuilder,
    private modalService: NgbModal,
    private route: ActivatedRoute,
    private router: Router,
    public commonService: CommonService
  ) {
    if (this.router.getCurrentNavigation() != null) {
      this.successMessage = this.router.getCurrentNavigation().extras.state;
    }
  }

您可以通过以下方式访问状态:

history.state.updateMessage

在2分钟内由您自己提问并回答!看起来这篇文章可能会得到我的朋友。你们如何在构造函数中注入路由器?你确定你是这样做的:构造函数(私有路由器:路由器){}。。。。顺便说一句,@Ronnie我想他没有回答这个问题,但他想以错误的方式为当前的问题添加一些东西。@FatihErsoy,这是有道理的。@Ahmad,我建议你继续编辑带有附加细节的作品,这样就不会让未来的读者感到困惑了。TxHi各位:请看我的最新答案。