компонентов и их зависимостей.
Каждый виджет имеет конфиг со подобным интерфейсом:
inteface WidgetSpec {
service: WidgetService,
component: WidgetComponent,
}
и частный случай
const statsWidget = {
service: StatsWidgetService,
component: StatsWidgetComponent,
}
где
@Injectable()
class StatsWidgetService {
constructor(private dep: SomeDependency) {}
}
Инстанс сервиса создаётся через инжектор следующим образом:
@Injectable()
class WidgetFactory {
...
createServiceInstance<T>(constructor: new (...args: any[]) => T): T {
const tempInjector = Injector.create({
providers: [{ provide: constructor, deps: [] }],
parent: this.injector,
});
return tempInjector.get(constructor);
}
}
Injector.create умеет работать только со StaticProvider, что подразумевает самостоятельное предоставление deps создаваемого провайдера.
Есть ли возможность как-то автоматизировать этот процесс? Не вижу возможности указывать на зависимости руками.
чет не пойму в чем фишка такой реализации
Не проще ли указывать провайдеры в самом компоненте?
нет, я упростил схему, но инстанс сервиса нужен не в одном компоненте
и возможна ситуация, когда инстанс уже существует и нужно запровайдить его как значение вместо создания нового итд
ну кажется что можно твои виджеты в модули упокавать, внутри по токену провайдить сервис который будет инстансы создавать
а в какую сторону посмотреть, как это сделать?
плагинная архитектура
Обсуждают сегодня