3.5路由守卫
拥有权限才进入路由
常见的路由守卫如下:
CanActivate:进入路由前促发,当条件不满足时,无法进入该路由
CanDeactivate:从当前路由离开时促发,当条件不满足时,无法离开路由
Resolve:在路由激活之前获取路由数据
CanActivate CanActivate的值为一个数组,数组中可以添加多个路由守卫,只有当所有的路由守卫都通过时,才可以进入路由。
CanDeactivate CanActivate的值为一个数组,数组中可以添加多个路由守卫,只有当所有的路由守卫都通过时,才可以促发导航。
Resolve Resolve会在进入路由前促发,负责加载信息,当信息加载后再进入路由。如果加载不到想要的信息时,可以根据要求进行处理,如发出提示,或跳转其他路由。Resolve传递的值是一个对象,对象的属性为需要传递的参数,属性值为自定义的Resolve路由守卫。
自定义CanActivate路由守卫login.guard.ts
1.新建继承CanActivate接口的LoginGuard类,实现canActivate()方法。 2.在canActivate()方法中编写逻辑,当canActivate()方法返回为true时,允许进入路由,反之,当canActivate()方法返回为false时,不允许进入路由。
自定义CanDeactivate路由守卫unsave.guard.ts
1.新建继承CanDeactivate接口的UnSaveGuard类,实现canDeactivate()方法。CanDeactivate接口中需要指定一个泛型,该泛型为路由守卫保护的路由组件类型。 2.在canDeactivate()方法中编写逻辑,当canDeactivate()方法返回为true时,允许离开路由,反之,当canDeactivate()方法返回为false时,不允许离开路由。
自定义Resolve路由守卫product.resolve.ts
1.新建继承Resolve接口的ProductResolve类,实现resolve()方法。Resolve接口中需要指定一个泛型,该泛型为路由守卫保护的路由组件类型。 2.在resolve()方法中编写逻辑,加载数据返回或跳转等其他操作。
使用路由守卫
1.在路由模块中为路由守卫提供注册器
2.在对应的路由上使用路由守卫
使用Resolve路由守卫
1.在路由模块中为路由守卫提供注册器
2.在对应的路由上使用路由守卫
3.接受resolve路由守卫中传递的值
Last updated
Was this helpful?