Я пытаюсь получить items
из базы данных только один раз (я не ожидаю, что они изменятся).При первоначальной загрузке home-page.component.ts значение HomePageComponent.items
устанавливается правильно, однако, если я перемещаюсь от HomePageComponent
к ProfilePageComponent
, а затем обратно к HomePageComponent
, поскольку itemsService.items$
имеетуже решен, обратный вызов подписки не перезапускается и HomePageComponent.items
не инициализируется повторно.Это текущий обходной путь, который я использую, но он кажется слишком неуклюжим, чтобы быть правильным способом решения этой ситуации.
home-page.component.ts
ngOnInit() {
this.itemsService.items$.subscribe((items:item) => {
// Is only called once after items are initalially fetched over http
this.items = items;
this.itemsService.addItems(items);
});
if(this.itemsService.foundItems){
this.items= this.itemsService.items;
}
}
items.service.ts
export class ItemsService {
private items = new BehaviorSubject(null);
items$ = this.items.asObservable();
foundItems = null;
constructor(private httpClient: HttpClient){
this.items.next(httpClient.post<any>(myUrl,myQuery).subscribe(this.items));
}
addItems(items){
this.foundItems = items;
}
}