Проблема: мне нужно сделать http-вызов и сохранить объект, необходимый для генерации динамических маршрутов. Итак, я воспользовался APP_INITIALIZER.
// app.module.ts
import { ApplicationService } from './application.service';
providers: [
ApplicationService,
{
provide: APP_INITIALIZER, useFactory: appServiceFactory, deps:
[Injector, ApplicationService], multi: true
},
],
function appServiceFactory(injector: Injector, appService: ApplicationService): Function {
return () => {
return appService.loadApplication().then((app: Application) => {
/custom logic
});
});
};
}
// application.service.ts
@Injectable({
providedIn: 'root'
})
// navigation.component.ts
import { ApplicationService } from './application.service';
export class NavigationComponent implements OnInit {
constructor(private _applicationService: ApplicationService) {
}
}
Но внутри navigation.component служба приложения снова инициализируется. Я уверен в этом, потому что, если я регистрирую или помещаю оператор отладчика, метод службы () вызывается дважды.
Почему, даже если Сервис объявлен как одиночный с providedIn: root
, он восстанавливается?