У меня есть провайдер в AppModule, который предоставляет класс.
Есть ли способ обновить предоставленное значение во время выполнения?
{provide: MatDatepickerIntl, useClass: SomeClass}
Как можно заменить SomeClass на AnotherClass во время выполнения ( например: при реакции на событие в компоненте).
Я использую Angular 9.
EDIT
Я знаю, что могу использовать useFactory для генерации предоставленного значения на основе некоторого logi c. Проблема с этим подходом заключается в том, что фабричная функция по-прежнему запускается только один раз, когда компонент создается.
Я хочу снова запускать эту функцию всякий раз, когда происходит какое-либо событие. Как я могу это сделать?
EDIT2:
Итак, app.module делает это:
// this is in providers array...
{
provide: MatDatepickerIntl, deps: [DatePickerIntlService],
useFactory: (datePickerIntl) => datePickerIntl.getLocale()
}
Вышеупомянутая служба считывает текущий языковой стандарт и соответственно возвращает экземпляр подкласса MatDatepickerIntl , поэтому создается правильный класс.
Наконец, у меня есть событие в компоненте приложения ngOnInit:
onLangChange.subscribe(() => {
})
Как мне изменить предоставленный подкласс MatDatepickerIntl в обработчике событий? Я могу вызвать службу, но нет возможности обновить предоставленное значение с результатом ...
Material Date Picker ожидает, что токен MatDatepickerIntl вернет требуемый подкласс. Вот как он загружает локализованные тексты.
Надеюсь, это проясняет ситуацию немного лучше.
Заранее спасибо!