Я загружаю финансовые транзакции в базу данных MySQL и использую PHP restful API и угловой 5-интерфейс для создания отчетов. Используя выпадающие списки, пользователи могут выбирать даты начала и окончания и создавать отчеты за разные периоды. Я создал сервис DateService, который начинается с двух начальных значений (thismo и lastmo) и назначает их переменным даты (datev и datevb).
private datevSource = new BehaviorSubject <string> (this.thismo);
datev = this.datevSource.asObservable();
private datevbSource = new BehaviorSubject <string> (this.lastmo);
datevb = this.datevbSource.asObservable();
datev (дата окончания) и datevb (дата начала) используются для запроса базы данных для генерации отчетов. Пользователь может изменять эти даты так часто, как ему нравится, и значения сохраняются в DateService. Если они переходят к другому отчету, последние выбранные значения сохраняются в DateService. Они также могут сбросить значения по умолчанию (thismo & lastmo).
setDates(datevar, datevarb) {
this.datev = datevar;
this.datevb = datevarb;
}
reDate() {
this.datevSource.next(this.thismo);
this.datevbSource.next(this.lastmo);
}
Thismo и lastmo не меняются, когда пользователь создает отчеты. В настоящее время значения жестко заданы, и я меняю их в сервисе и перестраиваю / загружаю приложение при каждом обновлении базы данных (обычно раз в месяц). Не похоже, что мне нужно перестраивать приложение, чтобы просто изменить эти две переменные.
Я создал новую таблицу в базе данных, в которой хранятся эти значения, и хотел бы один раз нажать API, чтобы сохранить thismo и lastmo, когда пользователь обращается к приложению. Как я могу изменить свой datevSource, чтобы проверить, был ли thismo загружен из API, загрузить, если он не загружен, и затем передать значение как обычно? Я попытался создать новую переменную (firstrun = 0) и увеличить ее при запуске функции (loadGlobals), но другие функции, которые запрашивают базу данных, запускаются до завершения loadGlobals.
Я мог бы обманывать и загружать thismo из базы данных каждый раз, но я стараюсь избегать попадания в API каждый раз, когда кто-то переходит на новую страницу.
Буду признателен за любые советы или указатели.