Как очистить кэш провайдера для использования с useFactory в Angular 7 - PullRequest
0 голосов
/ 16 февраля 2019

Я создаю элементы на лету, и один из этих элементов использует токен @Inject, который разрешается до фабрики.

Проблема заключается в том, что экземпляр фабрики кэшируется в индексе узла.Как только мой элемент исчезнет из представления и вернется, я ожидаю вызова функции фабрики;но я не.Вместо этого я получаю кэшированную версию этого экземпляра фабрики.

enter image description here

Как убедиться, что кэш не используется после того, как объект исчез из вида?

По сути, когда вызывается мой конструктор @Component, я ожидаю совершенно новый сервис.Не кэшированный сервис.

@Inject(FORM_GROUP_MANAGER_SERVICE)
private formGroupManagerService: FormGroupManagerServiceImpl
{
    provide: FORM_GROUP_MANAGER_SERVICE,
    useFactory: (structureControlService, createTonicControlFactory, parent) => new FormGroupManagerService(
        structureControlService,
        createTonicControlFactory,
        parent
    ),
    deps: [StructureControlService, FORM_GROUP_MANAGER_SERVICE_CREATE_CONTROL, [new Optional(), FormGroupManagerService]]
},

1 Ответ

0 голосов
/ 17 февраля 2019

В угловом репо действительно есть запрос функции для этого , но сейчас я могу подумать о 2 подходах:

  • Вместо этого напрямую введите метод фабрикиразрешенного экземпляра этого.Таким образом, клиент может самостоятельно разрешать экземпляры, что делает его ответственным также и за время жизни разрешенного объекта.

  • Зарегистрировать провайдера фабрики на уровне директивы / компонента как в этом блице

...