Angular 库使用来自应用程序的扩展类

问题描述

我正在尝试在 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...