Потерять значения списка при переходе от страницы - PullRequest
1 голос
/ 06 июня 2019

Итак, я храню список IItineraries в закрытой переменной, которую я назначаю для ngOnInit со следующим:

  ngOnInit() {
    this.loggedInUser = firebase.auth().currentUser;
    this.dataSvc.getItineraries().subscribe(res => {
      this.itineraries = res;
    });
    console.log('logged in user add itin page', this.itineraries);
  }
                <ion-list>
                  <div *ngFor="let itinerary of itineraries">
                    <ion-card class="itinerary-module">
                      <ion-card-content>
                        <div>
                          <h2>{{itinerary.startDate | date: "MM/dd/yyyy"}} - {{itinerary.endDate | date: "MM/dd/yyyy"}}</h2>
                        </div>
                        <div>
                          <h1>{{itinerary.destination}}</h1>
                        </div>
                        <div>
                          <h2>{{itinerary.tripDetails}}</h2>
                        </div>
                        <div class="chip" *ngFor="let activity of itinerary.activities">
                          <label> {{ activity }} </label>
                        </div>
                      </ion-card-content>
                    </ion-card>
                  </div>
                </ion-list>

Это нормально при начальной загрузке страницы ... значения отображаются, но когда я ухожу со страницы и затем возвращаюсь, она пуста и значения не отображаютсяt отображается, пока я не закрою и снова не открою приложение.

1 Ответ

1 голос
/ 06 июня 2019

Я подозреваю, что в случае холодного субъекта Observable запущен, но "не охлаждается", то есть не завершается и не выдает новые значения.

В вашем случае это означает, что при переходе назад кваша страница, ваш getItineraries() сервисный метод new call очень вероятно дает вам ту же ссылку на Observable, что и в первый раз.Он уже начал излучать, так как вы подписались на него в первый раз.

Но теперь вы не получите никакого назначения в свойстве компонента itineraries, пока Observable не выдаст новое значение, которое может никогда не произойти в зависимости отчто он делает внутренне.

В этом случае у вас есть много возможных решений: попробуйте правильно отписаться, когда компонент уничтожен, переделайте ваш Observable в объект поведения ...

Если вы используете еготолько в вашем шаблоне вы также можете напрямую вызывать его с помощью асинхронного канала.Шаблон будет автоматически отменять подписку при уничтожении компонента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...