данные дублируются, когда я снова возвращаюсь на ту же страницу - PullRequest
0 голосов
/ 12 мая 2019

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

Мне нужно настроить ionViewWillLeave, чтобы убедиться, что все старые извлеченные данные удалены.

вот мой код:

import { Component, OnInit, OnDestroy } from '@angular/core';
import { LanguageService } from '../services/language.service';
import { Dress, DressService } from '../services/dress.service';
import { AuthService } from '../services/auth.service';

@Component({
  selector: 'app-my-ads',
  templateUrl: './my-ads.page.html',
  styleUrls: ['./my-ads.page.scss'],
})
export class MyAdsPage {
  allDress: Dress[];
  theSub: any;
  currentEmail = '';

  constructor(
    private currentLanguage: LanguageService,
    private dressService: DressService,
    private authService: AuthService,
  ) {
    this.currentEmail = this.authService.userDetails().email;
  }

  ionViewWillEnter() {
    this.theSub = this.dressService.getDressesForMyAds().subscribe(res => {
      this.allDress = res;
    });
    console.log('myAds started');
  }
  ionViewWillLeave() {
    this.theSub.unsubscribe();
    console.log('myAds leaved');
  }

  getCurrentLanguage() {
    return this.currentLanguage.getCurrentLanguage();
  }

  changeToArabic() {
    this.currentLanguage.changeToArabic();
  }

  changeToEnglish() {
    this.currentLanguage.changeToEnglish();
  }

}

1 Ответ

0 голосов
/ 15 мая 2019

Мне пришлось удалить ionViewWillLeave и изменить его следующим образом:

  ngOnDestroy() {
    this.theSub.unsubscribe();
    console.log('myAds leaved');
    // tslint:disable-next-line: forin
    for (const member in this.allDress) { delete this.allDress[member]; }
  }

Удаление выборочных данных перед тем, как выгрузить все исправлено. for (const member in this.allDress) { delete this.allDress[member]; }

...