【发布时间】:2019-07-10 21:01:12
【问题描述】:
我正在尝试在 Angular 7 中设置一个简单的 canDeactivate 守卫,并且我尝试了许多在线教程中的代码,但它们都产生了相同的错误:
“类型 'CanDeactivate' 不是通用类型。”
我做错了什么?我什至在任何谷歌点击中都找不到这个错误,除了另一个有 2 年历史的未回答的相同问题的问题。
在此处查看代码:
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
import { CanDeactivate } from '@angular/router/src/utils/preactivation';
export interface CanDeactivateComponent {
canDeactivate: () => Observable<boolean> | boolean;
}
@Injectable()
export class CanDeactivateGuard implements CanDeactivate<CanDeactivateComponent> {
canDeactivate(component) {
return component.canDeactivate ? component.canDeactivate() : true;
}
}
【问题讨论】:
-
欢迎来到 SO。为什么要从 @angular/router/sr/utils 导入 CanDeactivate?
-
不是 Angular 专家。如果您说明您使用的版本会有所帮助。但是,您的问题引起了我的兴趣,因为我喜欢学习新框架。我确实找到了一个与您的代码相似但有不同之处的博客。看这里:scotch.io/courses/routing-angular-2-applications/candeactivate
标签: angular angular-routing angular-router-guards