Eu tinha o seguinte código onde eu quero que o armazenamento seja inicializado primeiro, depois a sessão e então você deve entrar no aplicativo.
export function initApp(
storage: StorageService,
session: SessionService,
) {
return async () => {
await firstValueFrom(
storage.initialized$.pipe(
filter((event) => (event ? true : false)),
take(1),
),
)
await firstValueFrom(
session.initialized$.pipe(
filter((event) => (event ? true : false)),
take(1),
),
)
}
}
Eu costumava implementá-lo como segue
{
provide: APP_INITIALIZER,
useFactory: initApp,
deps: [StorageService, SessionService],
multi: true,
},
Mas com o último provideAppInitializer não consigo encontrar uma maneira de fornecer dependências para meu método.
Parece que a equipe angular mudou a maneira de implementá useFactory
-lo da seguinte forma:
provideAppInitializer(() => {
const initializerFn = ((service: Service) => {
return () => service.init();
})(inject(Service));
return initializerFn();
});
Mas não consigo entender onde colocar minhas dependências.
Alguém tem alguma ideia?
Basta injetar e usar.
Certifique-se de que o método init retorna uma promessa.
Se você quiser que a inicialização aconteça sequencialmente, use
switchMap
.Você pode simplificar seu código para: