【问题标题】:extending specific services to child class in angular 4将特定服务扩展到 Angular 4 中的子类
【发布时间】:2018-07-01 06:55:32
【问题描述】:

如果我想在子类中使用服务,那么我还必须在父类中添加这些服务,这会导致这些服务对该父类的所有子类都可用。如何在 Angular 4 中限制这一点

【问题讨论】:

  • 您能说明一下您的需求吗?向父类添加服务使子类可以使用该服务,那么有什么问题?
  • 我希望它只对真正需要它的类可用,而不是对所有不需要它并扩展同一个父类的类可用。

标签: angular dependency-injection angular2-services


【解决方案1】:

尝试使用声明本身内的提供者数组注入服务。例如,您可以通过以下方式在 AppComponent 中注入一个名为 MyService 的服务。

希望对你有帮助。

@Component({
  selector: 'my-app',
  providers: [MyService]
})
export class AppComponent { }

简单例子请参考https://v4.angular.io/api/core/Directive#providers

【讨论】:

  • 所以我将像这样直接访问它 Myservice.getItem() 。因为我不能在我的基类的构造函数中声明它(私有服务:Myservice),因为我必须调用带有额外参数的超级(即此服务)。并更改在其他类中定义的所有其他构造函数,并为其超级调用添加额外参数。
  • 我制作了一个 stackblitz 应用程序。如果您无法访问它,请告诉我。 stackblitz.com/edit/angular4-pkumxy?file=app%2Fapp.component.ts
  • 服务是被注入而不是扩展,因此不需要调用super。您将必须实例化服务的对象。要么尝试将其作为参数放入构造函数中,让 DI 自行工作,要么像上面的 stackblitz 应用程序那样手动完成。谢谢
  • 没问题,一切顺利! :)
猜你喜欢
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多