Сервис не хранит данные после перенаправления на новую страницу - Angular 8 - PullRequest
0 голосов
/ 09 июля 2019

У меня есть приложение 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 часа поиска неисправностей.

1 Ответ

0 голосов
/ 09 июля 2019

Я наконец понял, что я делаю не так. Я использовал:

href="/review" 

вместо:

routerLink="/review"

Который был экземпляром моего сервиса каждый раз, когда я заходил на новую страницу.

...