angularjs - 在基类中使用依赖项而不必从继承类传递此依赖项

标签 angularjs typescript angular

<分区>

在学习Angular2的过程中,我遇到了以下情况:

  • 1 个基类,它使用 angular2/http 依赖项
  • 1个扩展基类的继承类

如何在基类的构造函数中注入(inject) angular2/http 依赖项,而不必在实例化继承类时将 http 作为参数传递。

我不在继承类中使用http,所以我不想在那里看到它!

例如

// base class
class CRUDService {

    // http is used in this service, so I need to inject it here
    constructor(@Inject(Http) http) {}

    findAll() {
        return this.http.get('http://some.api.com/api/some-model');
    }
}

// inheriting class
class ThingService extends CRUDService {

    constructor() {
        // because we extend the base class, we need to call super()
        // this will fail since it expects http as a parameter
        // BUT i don't use http in this class, I don't want to inject it here
        super();
    }
}

理想情况下,我会在基类中创建一个新的 http 实例并像这样使用它 let http = new Http();,但这显然行不通。

最佳答案

不支持。如果你想注入(inject)一些东西,你必须在子类的构造函数中列出它,如果你想将它传递给父类(super class),你可以使用 super(someDependency)。没有退路。
这不是 Angular 的限制,而是类型化类中很常见的语言限制。

关于angularjs - 在基类中使用依赖项而不必从继承类传递此依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36477475/

相关文章:

gruntjs - 任务 "typescript"在 grunt 中失败

javascript - Angular Webpack 设置 : Migrate from css to sass using webpack

javascript - AngularJS指令不是渲染模板

javascript - 出现错误无法解构 'protocol' 的属性 'window.location',因为它在构建时在 nextjs 应用程序中未定义

javascript - 无法在 Angular 完整日历上显示自定义事件

javascript - TypeScript 编译模块在自动调用函数之前声明 var

Angular 组件 View 层不更新 localStorage 更改而不刷新

javascript - Firebase 查询子级的子级是否包含值

angularjs - 使用 multiCapabilites 时的多个 onPrepare 或动态登录参数

Angularjs 小数分隔符逗号