停止卸载组件,直到用户从对话框中选择保存或关闭

Stop unloading a component until user selects Save or Close from a dialog

我有一个带有一些表单输入的组件。如果我在修改当前组件中的某些内容后移动到另一个组件,那么它应该等到用户从打开的对话框中单击“确定”或“保存”window。

我可以通过 ngOnDestroy 函数触发对话框,但到那时,下一个组件已经加载。

这样做有什么解决方法吗?

我已经尝试过了,canDeactivate但是我的情况不起作用。

我正在使用 Angular 4

再次尝试 canDeactivate,这是唯一干净的方法。打开那里的对话框,return 如果需要阻止导航,您将解决的承诺(false)。

或者,如果您使用 mat-dialog,您可以简单地 return dialogRef.afterClose(),其中 return 是对话结果的可观察值。

如果您需要在用户点击保存时在组件中进行 api 调用,您也可以将 afterClose 可观察对象切换映射到那个。