Angular 6 проблема жизненного цикла: страница уничтожается без всякой причины - PullRequest
0 голосов
/ 28 мая 2020

Я разрабатываю мобильное приложение с Ioni c и Angular. У меня проблема с жизненным циклом Angular. У меня есть страница с календарем. В календаре есть разные виды: месяц, неделя и день. Нажав на конкретный c день, вы можете увидеть события, произошедшие в этот день. При нажатии на событие приложение переходит на страницу с подробностями события. На этой странице сведений есть ссылка на go обратно в календарь.

Проблема, с которой я сталкиваюсь, заключается в следующем: иногда, когда я go перехожу на страницу сведений о событии, страница календаря уничтожается, поэтому, когда я возвращаюсь к календарю, календарь повторно инициализируется до значений по умолчанию (фокус на сегодняшнем и недельном просмотре). Такое случается только иногда, и я не могу понять почему.

Я думал, что страница была уничтожена только при изменении параметров url. Например: пользователь может видеть больше календарей, идентификатор которых передается в URL-адресе; Я понимаю, что страница календаря уничтожается и повторно инициализируется при изменении календаря. Проблема в том, что иногда это происходит даже в одном календаре при открытии и событии, а затем при возврате на страницу календаря. Как я уже сказал, это происходит не каждый раз, а только иногда, и я не могу найти закономерность. Чтобы go вернуться на страницу календаря, со страницы мероприятия я просто делаю следующее:

 goToCalendar() {
        if (this.userId) {
          this.router.navigate(['/calendar/view/user/', this.userId]);
        } else {
          this.router.navigateByUrl('/calendar/view');
        }

  }

Вы можете помочь мне понять? Спасибо, Сабрина

1 Ответ

1 голос
/ 28 мая 2020

хранить данные в сервисе и использовать в ngOnDestroy для хранения переменной и ngOnInit для ее восстановления

Представьте, что у вас есть сервис, например

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class ShareService{

  data:any={}
  constructor() { }

}

переменная дата

В вашем page.calendar.component

date=new Date()
constructor(private shareService:ShareService){}
ngOnInit()
{
    if (this.shareService.data.date)
        this.date=this.shareService.data.date
}
ngOnDestroy()
{
    this.shareService.data.date=this.date
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...