Ну, main.ts
- это точка входа для приложения Angular.Здесь мы не можем запрашивать экземпляры служб или вводить их, потому что мы находимся за пределами приложения Angular.Похоже, что объект Storage
полностью отделен от приложения Angular, поэтому любое внедрение зависимостей, которое вам нужно, придется делать самостоятельно.
Также примечание: пока я не могу найтиЛюбая явная документация по этому вопросу, пример Amazon этого класса Storage имеет все его свойства как статические, поэтому я не уверен, что конфигурация вообще ожидает экземпляр класса.
Одна мысль, которая у меня была, - перехватить APP_INITIALIZER
, чтобы получить токены DI при первой загрузке приложения.Однако я не знаком с Amplify, поэтому я не знаю , когда он должен быть настроен, поэтому это может работать или не работать:
App.module.ts
providers: [
{
provide: APP_INITIALIZER,
useFactory: amplifyConfigFactory,
deps: [CookieService],
multi: true
}
]
ampifyConfigFactory.factory.ts
export function amplifyConfigFactory(cookieService: CookieService) {
Amplify.configure({
// ....
storage: new MyStorage(cookieService)
});
return () => Promise.resolve(); // factories must return a Promise
}
, поэтому над нашими deps
записями создаются и внедряются на заводе в порядке,и мы можем создать MyStorage
с cookieService
из Injector.
Опять же, если свойства в MyStorage должны быть статическими, вам понадобится другое решение здесь.Мне кажется, что MyStorage
не должно быть чем-то известным для приложения Angular, но в зависимости от того, нужно ли сконфигурировать Amblify до хука APP_INITIALIZER
, это может сработать.