相关疑难解决方法(0)

注入类数组

我有一个MetaManager类:

@Injectable()
export class MetaManager{

    constructor(private handlers:Handler[]){
        console.log(handlers);
    }
}
Run Code Online (Sandbox Code Playgroud)

这个类需要Handler[]注册为处理程序.当我得到一些元数据时,我在我的处理程序数组中循环以查看哪个可以处理我的元条目.

话虽如此,问题是我无法在main.ts中提供一个类数组作为配置,这是我尝试过的(以及什么不起作用):

使用String条目(@Provide('HANDLERS')在MetaManager中使用注释:

`bootstrap(AppComponent, [MetaManager,provide('HANDLERS', {useValue: [DebugHandler]}) ]);`
Run Code Online (Sandbox Code Playgroud)

使用接口提供处理程序:

export const HANDLERS: HandlerConfig = {handlers: [<Handler>DebugHandler]};

bootstrap(AppComponent, [MetaManager, provide(HandlerConfig, {useValue: HANDLERS}) ]);
Run Code Online (Sandbox Code Playgroud)

使用Handler[]类提供者:

bootstrap(AppComponent, [MetaManager, provide(Handler[], [DebugHandler])]);
Run Code Online (Sandbox Code Playgroud)

我想提供一个类数组,因为MetaManager将来需要有多个Handler,通知,错误等...

编辑:

使用多提供程序给我一个No provider for Array! (ApiService -> MetaManager -> Array)错误:

元manager.ts:

@Injectable()
export class MetaManager{

    constructor(private handlers:Handler[]){
        console.log(handlers);
    }
}
Run Code Online (Sandbox Code Playgroud)

main.ts:

bootstrap(AppComponent,
    [   MetaManager,
        provide(Handler, {useClass: DebugHandler, multi: true}),
        provide(Handler, {useClass: NotificationHandler, …
Run Code Online (Sandbox Code Playgroud)

angular2-injection angular

1
推荐指数
1
解决办法
1705
查看次数

标签 统计

angular ×1

angular2-injection ×1