- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 Angular 5 中,如果我有扩展抽象的 AbstractClassService
和 ExtendedClassService
,我可以在我的 NgModule 的提供者数组中这样做:
@NgModule({
providers: [
{provide: AbstractClassService, useClass: ExtendedClassService}
]
})
export class AppModule {}
这将允许我很容易地将 ExtendedClassService
与另一个切换以进行测试或其他任何操作。这仍然可以通过 Angular 6 完成,但是有一个新的 providedIn
选项可以在服务本身中设置以减少包大小:
@Injectable({providedIn: 'root'})
export class ExtendedClassService extends AbstractClassService {}
有没有办法让我在使用新的 providedIn
的同时完成与 Angular 5 相同的事情?像这样:
@Injectable({providedIn: 'root', provide: AbstractClassService})
export class ExtendedClassService extends AbstractClassService {}
最佳答案
我需要做两件事。
首先,在创建继承类时使用 implements
而不是 extends
并且不要使用 providedIn
键那里:
@Injectable() // removed providedIn
export class ExtendedClassService implements AbstractClassService {}
其次,改为将提供者指令添加到抽象类中:
@Injectable({providedIn: 'root', useClass: ExtendedClassService})
export abstract class AbstractClassService {}
其他提供者配置(useValue
、useExisting
、useFactory
)也可以在那里使用。
感谢 Abinesh 的 this comment这让我找到了the linked blog post .非常感谢博主!
关于Angular 6 providedIn - 如何自定义 @Injectable() 提供程序以进行依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50489412/
我正在尝试借助 Angular 的教程创建服务 https://angular.io/guide/http 我正在使用 Angular 7.0.7。 该服务将从一些 url 获取 json 数据: i
我已经彻底阅读了文档,虽然我找不到它的确切引用位置,但我的印象是在急切加载的模块的 providers 数组中声明服务将使单例可用到应用范围。如果这是真的, Is using @Injectable
我正在尝试将我的应用程序从 Angular v5 迁移到 v6,但在尝试在我的提供程序中指定 providedIn 时遇到以下 typescript 错误 Argument type {provide
在 Angular 9 中,可注入(inject)装饰器选项 providedIn有一个名为 any 的新值. root 和有什么区别和 any ? 在我使用 any 的情况下,服务是否被视为单例?
只是想确保我理解 @Injectable(providedIn: 'root') 的语义。 在 Angular 6 之前,如果我们从 NPM 导入一个包含服务的模块,我们将在我们的应用程序模块中声明该
我尝试在 Angular 中使用“providedin”功能,但收到错误“StaticInjectorError(AppModule)[DashboardComponent -> DashboardS
在 Angular 5 中,如果我有扩展抽象的 AbstractClassService 和 ExtendedClassService,我可以在我的 NgModule 的提供者数组中这样做: @NgM
对于 Angular 6,以下是创建单例服务的首选方式: import { Injectable } from '@angular/core'; @Injectable({ providedIn:
当我使用 @Injectable({ providedIn: 'root' }) 消息 Expects 0 arguments but got 1. Any idea on what to d
我正在尝试通过新的 providedIn 属性提供解析服务。 这是我在 protected 模块中使用的翻译解析器: import { Injectable } from '@angular/core
当在 Angular CLI 中生成服务时,它会添加带有“provided in”属性的额外元数据,Injectable 装饰器的默认值为“root”。 @Injectable({ provide
我的服务位于src/core/services/api.service.ts import { Injectable } from '@angular/core'; @Injectable({ p
我是一名优秀的程序员,十分优秀!