По аналогии с этот поток , я также реализую аналогичным образом.Моя идея заключается в том, чтобы кэшировать централизованные данные json в БД, чтобы к ним могли обращаться многие компоненты.
Однако в моем случае у меня есть служба данных http;который фактически выбирает данные JSON из локальной базы данных json-сервера, как показано ниже:
export class ProductDataService implements OnInit {
constructor(private httpClientService: HttpClient) {
this.productDataURL = environment.production ? "http://Server" : "http://localhost:3000/products";
this.productList = this.httpClientService.get<IProduct[]>(this.productDataURL);
}
}
Эта служба данных используется во многих компонентах, а также для просмотра асинхронных каналов.Ниже приведены некоторые из многих потребителей:
Компонент 1:
export class DetailsProductsComponent implements OnInit {
constructor(private activatedRoute: ActivatedRoute, private productService: ProductDataService) {
this.productService.productList.subscribe(item =>
{
this.selectedProduct = item.find(value => value.productCode == this.productId);
});
}
}
Компонент 2:
export class ProductListComponent implements OnInit {
_filterString: string = "";
constructor(private productDataService: ProductDataService) {
this._filterString = "";
this.productDataService.productList.subscribe(item => this.filteredProducts = this.masterProductList = item);
}
}
Как вы можете видеть выше, я только что перечислил 2 компонента, которыеиспользуют службу данных для своих собственных задач.Есть еще несколько компонентов как таковых.
Пожалуйста, укажите мне следующее:
- Это правильный способ доступа к данным?если нет, пожалуйста, руководство?
- Я заметил, что при переходе к любому из компонентов посредством щелчков пользовательского интерфейса выполняется вызов по каналам подписки или асинхронности;который попадает в вызов БД Json-сервера.Я вижу журнал в окне терминала через json-сервер.Так не плохая ли производительность?Как сделать это эффективным?
- Кроме того, я также пытаюсь сделать автоматическое обновление наблюдаемого при обновлении БД.Но это не работает.Что мне делать?
Спасибо
Использованные библиотеки: "rxjs": "~ 6.2.0", "@ angular / animations": "^ 6.1.10"," @ angular / common ":" ^ 6.1.10 "," @ angular / compiler ":" ^ 6.1.10 "," @ angular / core ":" ^ 6.1.10 "," @ angular / forms ": "^ 6.1.10", "@ angular / http": "^ 6.1.10", "@ angular / platform-browser": "^ 6.1.10", "@ angular / platform-browser-dynamic": "^ 6.1.10 "," @ angular / router ":" ^ 6.1.10 "