[英]How to use the @Injectable providedIn root in angular 5 with getting
[英]Angular 6 providedIn - how to customize the @Injectable() provider for dependency injection?
在Angular 5中,如果我使用AbstractClassService
和ExtendedClassService
来扩展抽象,我可以在我的NgModule的providers数组中执行此操作:
@NgModule({
providers: [
{provide: AbstractClassService, useClass: ExtendedClassService}
]
})
export class AppModule {}
这将允许我将ExtendedClassService
与另一个进行切换以进行测试或非常容易。 这仍然可以使用Angular 6完成,但是有一个新的providedIn
选项可以在服务本身中设置以减少包大小:
@Injectable({providedIn: 'root'})
export class ExtendedClassService extends AbstractClassService {}
有我的方式来完成我有5角,而使用新的同样的事情providedIn
? 像这样的东西:
@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
)也可以在那里使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.