问题描述
我正在尝试在 Angular 中创建一个授权库
一个基本的例子是这个抽象类,它将在授权库中:
@Injectable({
providedIn: 'root',})
export abstract class AuthService {
abstract isAuthenticated(): boolean;
}
在图书馆内,我正在创建一个守卫,我希望那个守卫使用授权服务:
@Injectable({
providedIn: 'root'
})
export class MyGuard implements CanActivate {
constructor(private auth: AuthService) {}
canActivate(
route: ActivatedRouteSnapshot,state: RouterStateSnapshot
):
| boolean
| UrlTree
| Observable<boolean | UrlTree>
| Promise<boolean | UrlTree> {
if (this.auth.isAuthenticated()) {
//Do something
}
....
}
}
在消费应用程序中,我想扩展授权服务:
Injectable({
providedIn: 'root',})
export class AppAuthService extends AuthService {
isAuthenticated(): boolean {
// Do auth checks here
}
anotherMethod(): void {
// Do something extra
}
}
然后在应用模块中更新提供者
providers: [
{
provide: AuthService,useClass: AppAuthService
},]
扩展授权服务在应用内运行良好,但守卫仍在使用基本服务并返回以下错误:
错误错误:未捕获(承诺):类型错误: this.auth.isAuthenticated 不是函数 TypeError: this.auth.isAuthenticated 不是函数
我怎样才能让守卫使用被覆盖的 AppAuthService?这甚至可能吗?
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)