4.2.3、CanDeactivate:处理用户未提交的修改 当进行表单填报之类的操作时,因为会涉及到一个提交的动作,当用户没有点击保存按钮就离开时,最好能暂停,对用户进行一个友好性的提示,由用户选择后续的操作 创建一个路由守卫,继承于 CanDeactivate 接口 ng g guard hero-list/guards/hero-can-deactivate 与上面的 CanActivate、CanActivateChild 路由守卫的使用方式不同,对于 CanDeactivate 守卫来说,我们需要将参数中的 unknown 替换成我们实际需要进行路由守卫的组件 import { Injectable } from '@ angular/core'; import { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@ <unknown> { canDeactivate( component: unknown, currentRoute: ActivatedRouteSnapshot, currentState
用CanDeactivate来处理从当前路由离开的情况。 用Resolve在路由激活之前获取路由数据。 用CanLoad来处理异步导航到某特性模块的情况。 路由器会先按照从最深的子路由由下往上检查的顺序来检查CanDeactivate守护条件。 然后它会按照从上到下的顺序检查CanActivate守卫。 ManageHeroesComponent }, { path: '', component: AdminDashboardComponent } ] } ] } ]; CanDeactivate 我们需要CanDeactivate守卫。 Resolve 主要实现的就是导航前预先加载路由信息。可以做到,当真正需要导航进来这个详情页面时,是不需要再去获取数据的。是提前加载好的。
这是通过调用路由配置阶段的 canDeactivate 和 canActivate 钩子函数来判断的。 ? 注意, canDeactivate 按照从下至上的冒泡顺序检查,而 canActivate 则是从上之下。任何一个钩子函数都可以终止界面切换。 需要注意的是,验证类钩子,比如 canActivate, canDeactivate 和 canReuse 在合并选项时会直接被新值覆盖。 canDeactivate(transition)[->Promise|Boolean] 在验证阶段,当一个组件将要被切出的时候被调用。 组件的 canDeactivate 钩子仅在子级组件的 canDeactivate 被断定( resolved )之后调用。
用CanDeactivate来处理从当前路由离开的情况.
离开守卫CanDeactivate : 在函数返回true时,才能离开路由页面。
canDeactivate:它将防止或允许跳出旧控制器的导航。 停用:它会响应跳出旧控制器的成功事件。
,仅仅指示数据目前是处于加载 状态还是已经加载完毕 十四、路由与视图 1.vue-router 2.vue-router钩子函数:canReuse、canActivate、activate、data、canDeactivate
将忽略场景切换钩子函数中发生的异常 4.route钩子函数 canActivate(),在组件创建之前被调用 activate(),在组件创建且将要加载时调用 data(),在activate之后,用于加载和设置当前组件的数据 canDeactivate
在CanDeactivate页面上阅读更多信息。 您将使用绑定到后退按钮的事件连接此方法,您将添加到组件模板。