| 
                                      18
                                 | 
| Francesco Borzi · 技术社区 · 8 年前 | 
|   |      1 
                                  32
                             我用 ngx-bootstrap Modals 和 RxJs Subjects . 
 以下是模板: 
 应用程序内。单元ts文件转到@NgModule部分,并将ConfirmLeaveComponent组件添加到entryComponents。  | 
|   |      2 
                                  3
                             除了ShinDarth的好解决方案之外,似乎值得一提的是,您还必须涵盖对模式的取消,因为action()方法可能不会被激发(例如,如果您允许esc按钮或在模式外单击)。在这种情况下,observable永远不会完成,如果你使用它进行路由,你的应用程序可能会卡住。 
    
   在我的例子中,我映射了提到的
    | 
|   |      3 
                                  3
                             只需扩展mitschmidt提供的关于单击外部/转义按钮的附加信息,这个canDeactivate方法可以与Francesco Borzi的代码一起工作。我只是在函数中内联添加了subscribe to onHide():  | 
|   |      4 
                                  2
                             | 
|   |      5 
                                  1
                             这是我的实现,使用ngx引导对话框在离开某个路由之前获得一个确认对话框。在服务的帮助下,我有一个名为“canNavigate”的全局变量。如果为true或false,此变量将保留布尔值,以查看是否可以进行导航。该值最初为true,但如果我在组件中进行更改,我将使其为false,因此“canNavigate”将为false。如果为false,我将打开对话框,如果用户放弃更改,它将通过使用queryParams转到所需的路由,否则它将不会路由。  | 
|   |      6 
                                  1
                             
   您可以将值传递给
     | 
|   |      7 
                                  0
                             我使用“角度材质”对话框实现了此解决方案: 
  | 
|   |      8 
                                  0
                             这是一个没有主题的工作解决方案,您可以添加布尔属性 这是html 
  | 
|   | phpdroid · ngx引导BsModal从子组件关闭 7 年前 |