Я создал простой сервис, который сначала загружает конфигурацию из файла JSON.Поскольку я хочу, чтобы данные были доступны при запуске приложения, я использую APP_INITIALIZER для загрузки данных.
В самом сервисе данные доступны и все нормально.Но когда я использую сервис изнутри компонента, он получает странное поведение.Пожалуйста, кто-нибудь может объяснить, что не так с моим кодом?
filterService.ts
export class FilterService {
url:string = '/admin2/src/assets/import.filter.json';
filters: Filter[];
currentFilter: Filter;
public loadFilters() {
this.http.get(this.url).subscribe(response => {
this.filters = <Filter[]>response;
if (this.filters[0])
this.currentFilter = this.filters[0];
});
}
эта служба загружается во время инициализации приложения
app.module.ts
@NgModule({
...
providers: [
FilterService,
{ provide: APP_INITIALIZER, useFactory: (filterService: FilterService) => () => filterService.loadFilters(), deps: [FilterService], multi: true },
],
...
Наконец, в моем компоненте я делаю:
filter.component.ts
constructor(private filterService: FilterService) {}
ngOnInit() {
console.log('import initialized');
console.log(this.filterService);
console.log(this.filterService.currentFilter);
console.log(this.filterService.filters);
console.log(this.filterService.getFilters());
}
И теперь я действительно непонять, что происходит в console.log
Object { http: {…}, url: "http://...} // as expected
undefined // ??
undefined // ??
undefined // ??
Почему я не могу получить доступ к свойствам объекта?Мне кажется, что все хорошо и доступно ....