Я из c # фона.Я новичок в Angular 6. Я узнал, что есть библиотека, похожая на ninject для DI.Inversify.Я пытался использовать его в приложении.
Я настроил привязки и типы.
TYPES.ts
const TYPES = {
IAppService : Symbol.for("IAppService")
};
export {TYPES}
Bindings.ts
import 'reflect-metadata';
import { Container } from "inversify"
import { TYPES } from "./TYPES"
import { IAppService } from "./services/IAppService"
import { AppService } from "./services/AppService"
const inversifyContainer = new Container();
inversifyContainer.bind<IAppService>(TYPES.IAppService).to(AppService).inSingletonScope();
export { inversifyContainer };
И мой класс, который я вводю APPService
import { inject } from "inversify";
import { Component, OnInit } from '@angular/core';
import { AppModel } from './model/AppModel'
import { IAppService } from './services/IAppService';
import { TYPES } from "./TYPES";
@Component({
selector: 'summary-app',
templateUrl: './summary-app.component.html'
})
export class SummaryApp implements OnInit {
private _service: IAppService;
constructor(
@inject(TYPES.IAppService) service: IAppService,
) {
this._service = service;
}
}
Module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppService } from "./services/AppService"
import { SummaryApp } from './summary-app.component';
@NgModule({
declarations: [
SummaryApp
],
imports: [
BrowserModule
],
providers: [
AppService
],
bootstrap: [SummaryApp]
})
export class AppModule {
}
Компиляция прошла успешно.Но я получаю ошибку времени выполнения Не удается разрешить все параметры для SummaryApp
Это означает, что Inversify не может разрешить зависимость.Я вижу много примеров, когда люди разрешали зависимость, используя сервис-локатор.Но я чувствую его анти образец.Где взять корень композиции для контейнера Inversify?