ngOnDestroy在退出前警告用户

时间:2017-06-18 06:48:06

标签: angular angular-route-guards

我正在尝试找到一种在退出屏幕之前提醒用户的方法。如果他们按“否”则不应该销毁。如果他们按“确定”然后继续进行销毁操作。

ngOnDestory是否有在ngOnDestory之前发生的事件?例如ngOnBeforeDestroying?

我目前正在开发Angular 4。

1 个答案:

答案 0 :(得分:2)

是的,你应该使用canDeactivate路线保护。

创建可注射服务

@Injectable()
class CanDeactivateService implements CanDeactivate<TeamComponent> {


  canDeactivate(
    component: TeamComponent,
    currentRoute: ActivatedRouteSnapshot,
    currentState: RouterStateSnapshot,
    nextState: RouterStateSnapshot
  ): Observable<boolean>|Promise<boolean>|boolean {
    return component.isDirty ;
 }
}

这可用于确定是否可以销毁页面。

这应该在路由中配置为

RouterModule.forRoot([
      {
        path: '..', // path
        component: Comp, // name of the component
        canDeactivate: [CanDeactivateService]
      }
    ])
  ],

Read more here...

Angular's Official Demo

这也可以通过动态组件加载来实现。按照 here

步骤操作