Javascript 在销毁角5中的组件之前确认退出

Javascript 在销毁角5中的组件之前确认退出,javascript,angular,angular5,Javascript,Angular,Angular5,我想利用angular的生命周期回调挂钩之一,ngondestry,通过观察应用程序发生的有趣状态(例如,当用户有未保存的更改时),防止angular破坏我的组件。由于使用对话框询问用户是否确定其操作是一种习惯,因此我当前的实现如下所示: @Component({ selector: 'admin-edit-product-form' // ... }) export class AdminEditProductFormComponent implements OnInit, OnD

我想利用angular的生命周期回调挂钩之一,
ngondestry
,通过观察应用程序发生的有趣状态(例如,当用户有未保存的更改时),防止angular破坏我的组件。由于使用对话框询问用户是否确定其操作是一种习惯,因此我当前的实现如下所示:

@Component({
   selector: 'admin-edit-product-form'
   // ...
})
export class AdminEditProductFormComponent implements OnInit, OnDestroy {
   // here goes my form
   productForm: FormGroup;
   // ...
   constructor(
      private fb: FormBuilder,
      private mDiagService: ModalDialogService) {}      

   ngInit() {
      // initialize fb
      productForm = fb.group(/*initialization*/)
   }

   ngOnDestroy() {
       // HOW DO I BLOCK Angular at this stage in a Subscriber?
       if (this.productForm.dirty) {
         this.mDialogService.confirm({
           title: 'You have unsaved changes',
           content: 'Any unsaved changes will be permenently lost. Sure you want to exit?',
           btnOkText: 'Exit',
           btnCancelText: 'Remain'
        }).subscribe(confirmed => {
           if (!confirmed) {
              // HOW DO I DO IT HERE?
           }
        })
      }
   }
}
这可能不是唯一的办法。如果有什么建议的话。求你了,我很期待


提前谢谢

在路由器中使用CanDeactivate防护。在路由器中使用CanDeactivate防护。