У меня есть приложение Angular 8, и я создал DataService для доступа к данным между компонентами при маршрутизации на разные страницы.По какой-то причине данные не сохраняются, когда я перехожу на другую страницу.Я исследовал проблему и попробовал предложение, которое я нашел здесь, и ничто, кажется, не работает.Я, должно быть, упускаю что-то маленькое, потому что клянусь, что оно справа или, по крайней мере, очень близко.
Вот мой сервис данных:
import { Injectable, Injector } from '@angular/core';
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
@Injectable()
export class DataService {
private _http: HttpClient;
public stepOneValues = [];
//Step One Values
focusMetric = { name: "Focus Metric Selection(s)", value: null };
focusMetricWeight = { name: "Metric Weights", value: null };
preTimePeriod = { name: "Pre Time Selection", value: null };
postTimePeriod = { name: "Post Time Selection", value: null };
matchType = { name: "Match Type", value: null };
overlappingControlStores = { name: "Overlapping Control Stores", value: null };
excludeStoresCurrentlyTesting = { name: "Exclude Current Test Stores", value: null };
excludeExceptionRecords = { name: "Exclude Exception Stores", value: null };
constructor(injector: Injector) {}
setStepOneValue(id, value) {
let temp = this[id];
temp.value = value;
this[id] = temp;
}
getStepOneValues() {
this.stepOneValues = [];
this.stepOneValues.push(this.focusMetric);
this.stepOneValues.push(this.focusMetricWeight);
this.stepOneValues.push(this.preTimePeriod);
this.stepOneValues.push(this.postTimePeriod);
this.stepOneValues.push(this.matchType);
this.stepOneValues.push(this.overlappingControlStores);
this.stepOneValues.push(this.excludeStoresCurrentlyTesting);
this.stepOneValues.push(this.excludeExceptionRecords);
return this.stepOneValues;
}
}
Я предоставляю DataService в моем app.module.ц.У меня также есть служба в конструкторе обоих компонентов моей страницы, например:
constructor(public _dataService: DataService) { }
На моей первой странице, когда значение изменяется, я запускаю следующую функцию:
preChange(evt) {
console.log(evt);
let dateString = evt.startDate.format('DD/MM/YYYY') + " - " + evt.endDate.format('DD/MM/YYYY');
this._dataService.setStepOneValue("preTimePeriod", dateString);
this._dataService.preTimePeriod.value = dateString;
}
КогдаЯ перехожу на вторую страницу и пытаюсь получить значение следующим образом:
this.stepOneValues = this._dataService.getStepOneValues();
Это просто возвращает ноль для моего значения preTimePeriod, и я не могу понять, почему.Супер разочарован в этом пункте, и это было как 3 часа поиска неисправностей.