Angular2如何将所有接口实现注入服务列表?
发布时间:2020-12-17 18:10:11 所属栏目:安全 来源:网络整理
导读:我正在用Typescript学习Angular2,我遇到了问题. 我有两个classe,imprements相同的界面.如何将它们作为列表注入服务? 我读到了opaquetoken https://angular.io/docs/ts/latest/guide/dependency-injection.html#opaquetoken 但我不知道我是否需要使用它以及
我正在用Typescript学习Angular2,我遇到了问题.
我有两个classe,imprements相同的界面.如何将它们作为列表注入服务? 我读到了opaquetoken https://angular.io/docs/ts/latest/guide/dependency-injection.html#opaquetoken 但我不知道我是否需要使用它以及如何使用它. export interface CheckerInterface { check(text : string) : boolean } export class Checker1 implements CheckerInterface { check(text : string) : boolean { //do something return true; } export class Checker2 implements CheckerInterface { check(text : string) : boolean { //do something return true; } @Injectable() export class Service { constructor(private checkers: CheckerInterface[]) { //?? checkers.foreach( checker => checker.check(somestring)); } } 谢谢你的帮助 ! 解决方法
您需要将阵列添加为提供程序,或者在提供程序配置中使用multi:true.
export const CHECKERS = new OpaqueToken('one'); @NgModule({ providers: [ { provide: CHECKERS,useValue: [new Checker1(),new Checker2()] },] }) 要么 @NgModule({ providers: [ { provide: CHECKERS,useClass: Checker1,multi: true },{ provide: CHECKERS,useClass: Checker2,] }) 第二个可能更好,因为你让Angular创建它们,允许它们在需要时注入自己的依赖项. 然后你只需要在注入时使用CHECKERS标记 import { Inject } from '@angular/core'; import { CHECKERS } from './wherever'; constructor(@Inject(CHECKERS) private checkers: CheckerInterface[]) { (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |