Angular 8, как использовать тот же маршрут с другим состоянием от NavigationExtras? - PullRequest
0 голосов
/ 07 апреля 2020

Я использую Angular 8 и Ioni c 4. У меня есть маршрут для действия, который используется для создания (POST) или редактирования (PUT) по параметру onEditMode, предоставленному в NavigationExtras state.

Однако после повторного доступа к маршруту отображаются старые устаревшие данные - возможно, Angular сохраняют перезагрузку, но я бы хотел изменить, чтобы она работала как навигация Ioni c 3 - перезагрузите при каждом изменении страницы.

Я хотел бы иметь возможность удалить activities:name страницу для стека навигации, чтобы я мог переходить на эту страницу с новыми параметрами и обновлять вид страницы на основе этих параметров.

Модуль маршрутизации приложений


{
    path: 'activities/:name',
    loadChildren: () =>
      import('./pages/activities/activities-routing.module').then(m => m.ActivitiesRoutingModule)
  }

И функция навигации

let navigationExtras: NavigationExtras = {
      state: {
        date: this.reportDate,
        href: this.getCurrentUrlWithoutTabs(this.router.url),
        report: data,
        editMode: true,
        reportData: report,
        previewMode: preview
      },
      replaceUrl: true,
      skipLocationChange: true
    };
    let backHref = 'daily-overview'
    this.router.navigateByUrl(`/tabs/activities/${pageUrl}`, navigationExtras)
    .then(() => this.router.navigate([`/tabs/activities/${pageUrl}`]))

Gist => app-routing.module.ts https://gist.github.com/Verthon/a9432a502329e6d30b05b1d9db53d9dc

Gist => activity.page.ts https://gist.github.com/Verthon/59a107552b997f517e910b6fa83c03cd

Gist => gotToAcitivity () https://gist.github.com/Verthon/537fe2fb407997aa7e45fa7cb49467bb

1 Ответ

1 голос
/ 07 апреля 2020

В ioni c всякий раз, когда вы go отправляетесь на новый маршрут, он строится, и когда вы покинете его, он будет уничтожен, поэтому ваша проблема с навигационными элементами, они по-прежнему связывают предыдущие значения и не очищаются после переходите назад, поэтому либо очистите параметры навигации при обратной навигации, либо создайте сервис, чтобы установить объект внутри него при навигации и при навигации, чтобы маршрут возвращал его с помощью get, и когда представление маршрута оставит очистить сервис ...

И я уверен, что что-то не так, но так как у меня нет полного кода двух страниц, все, что вам нужно сделать, это когда второй просмотр страницы уйдет, очистить все переменные на странице, например:

ionViewWillLeave() {
   firstvariable = [] ; 
   second variable =0 ;
   third variable = '';
   ...
}

И, таким образом, все страницы должны быть заполнены для каждой записи, и, хотя, если вам нужно аккуратное и хорошее решение, вам нужно предоставить код из 2 страниц.

...