我有以下ModuleWithHttp班:

@Injectable()
export default class {
  constructor(private fetchApi: FetchApi) {}
}

我想按如下方式使用它:

@Component({
  selector: 'main',
  providers: [FetchApi]
})
export default class extends ModuleWithHttp {
  onInit() {
    this.fetchApi.call();
  }
}

因此,通过扩展一个已经注入依赖项的超类,我想在它的子类中访问它.

我try 了许多不同的方法,甚至将super class作为组件:

@Component({
  providers: [FetchApi]
})
export default class {
  constructor(private fetchApi: FetchApi) {}
}

但是,即使是在超级班级,this.fetchApi也等于null.

推荐答案

您必须在超类中注入fetchAPI,并将其传递给子类

export default class extends ModuleWithHttp {

  constructor(fetchApi: FetchApi) {
     super(fetchApi);
  }   

  onInit() {
    this.fetchApi.call();
  }
}

这是DI一般工作方式的一个特征.超类将通过继承实例化该子类,但您必须向该子类提供所需的参数.

Angular相关问答推荐

Angular 16路卫单元测试可观察到的SpyObj属性

Angular 17自定义指令渲染不起作用'

更改图表上的光标以进行zoom

使选项卡与父零部件成一定Angular 激活

列表和映射的SCSS语法

Angular 17水化-POST请求同时触发客户端/服务器端,而GET请求仅触发服务器端?

用于 React 的 ngx-extended-pdf-viewer

ngrx 效果等到从初始值以外的其他状态收到响应

Angular 测试被认为是成功的,即使有错误

异步管道模板中的局部变量(Angular 2+)

如何以编程方式关闭 ng-bootstrap 模式?

类型错误:无法读取未定义的属性

如何在angular 5 中获取基本网址?

Angular2 + Jspm.io:使用类decorator 时需要反射元数据垫片

如何组合两个可观察到的结果?

将 Angular 5 升级到 6 时,我得到不兼容的对等依赖(使用 ng update @angular/core)

如何在 ngFor angular 2 内部使用 track

如何在 Angular 4 中翻译 mat-paginator?

如何使用 @ngrx/store 获取 State 对象的当前值?

使用 EventEmitter 传递参数