测试:abstract class不允许出现在Angular依赖注入框架的providers区域内

237 阅读1分钟

测试用的service类:

import { Injectable } from '@angular/core';

@Injectable({
    providedIn: 'root',
  })
export abstract class HttpErrorHandler{
    constructor(){}
    abstract handleError(
      ): void;
}

@Injectable({
    providedIn: 'root',
  })
export class UnKnownHandler {
    handleError(){
        console.log('UnknownHandler works');
    }
}

@Injectable({
    providedIn: 'root',
  })
export class BadGatewayHandler {
    handleError(){
        console.log('BadGatewayHandlers works');
    }
}

因为abstract class没有办法实例化,所以上面的定义会遇到错误消息:

Cannot assign an abstract constructor type to a non-abstract constructor type.

解决办法:

运行时被注入的是HttpErrorHandler子类的一个数组:

更多Jerry的原创文章,尽在:“汪子熙”: