Angular 6提供了 – 如何自定义@Injectable()提供程序以进行依赖
发布时间:2020-12-17 10:18:31 所属栏目:安全 来源:网络整理
导读:在Angular 5中,如果我使用AbstractClassService和ExtendedClassService来扩展抽象,我可以在我的NgModule的providers数组中执行此操作: @NgModule({ providers: [ {provide: AbstractClassService,useClass: ExtendedClassService} ]})export class AppModul
在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 {} 有没有办法让我在使用新的provideIn时完成与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)也可以在那里使用. 凭借this comment获得Abinesh的信用,这使我获得了the linked blog post.非常感谢博客作者! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- angular 2 router.events订阅未触发
- scala – 在SBT中使用Spring-Data-Neo4j高级映射模式
- 如何在不使用ADD或COPY指令的情况下将文件添加到Dockerfile
- angularjs post 后台 取不到值,修改contentTye 可以解决
- angularjs – 从对象Angular JS中删除元素的正确方法是什么
- angularjs – 使用$translateProvider.useUrlLoader
- 基于shell的if和else详解
- 下一代 Bootstrap 的 5 个超酷特点
- 防止Vim在出口处清除剪贴板
- angularjs – NgUpgrade:升级Angular1组件时无法使用templ