从Angular 7.0.0版本开始,CanActivate已经被弃用,并被拆分为更加细粒度的守卫服务。为了替换CanActivate,可以使用如下的代码示例:
import { Injectable } from '@angular/core'; import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; import { Observable } from 'rxjs/Observable';
@Injectable({
providedIn: 'root'
})
export class ExampleGuard implements CanActivate {
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable
在路由模块中使用新的守卫服务时,可以使用类似下面的代码:
const routes: Routes = [ { path: 'example', component: ExampleComponent, canActivate: [ExampleGuard] } ];
在这个例子中,我们定义了一个新的ExampleGuard守卫服务,用来取代CanActivate。然后,在路由模块中使用它来保护ExampleComponent组件。