私は MetaManager クラスを持っています:
@Injectable()
export class MetaManager{
constructor(private handlers:Handler[]){
console.log(handlers);
}
}
このクラスは、Handler[]
ハンドラーとして登録する必要があります。それよりも、メタデータを取得したら、handlers 配列をループして、メタ エントリを処理できるのはどれかを確認します。
そうは言っても、問題は、main.ts で構成としてクラスの配列を提供できないことです。
文字列エントリの使用 ( @Provide('HANDLERS')
MetaManager の注釈付き:
`bootstrap(AppComponent, [MetaManager,provide('HANDLERS', {useValue: [DebugHandler]}) ]);`
インターフェイスを使用してハンドラーを提供する:
export const HANDLERS: HandlerConfig = {handlers: [<Handler>DebugHandler]};
bootstrap(AppComponent, [MetaManager, provide(HandlerConfig, {useValue: HANDLERS}) ]);
Handler[]
クラス プロバイダーの使用:
bootstrap(AppComponent, [MetaManager, provide(Handler[], [DebugHandler])]);
MetaManager
将来、複数の Handler 、通知、エラーなどが必要になるため、クラス配列を提供したい...
編集:
マルチプロバイダーを使用するとNo provider for Array! (ApiService -> MetaManager -> Array)
エラーが発生します:
meta-manager.ts:
@Injectable()
export class MetaManager{
constructor(private handlers:Handler[]){
console.log(handlers);
}
}
main.ts:
bootstrap(AppComponent,
[ MetaManager,
provide(Handler, {useClass: DebugHandler, multi: true}),
provide(Handler, {useClass: NotificationHandler, multi: true})]);