Как сбросить стек маршрутов после маршрутизации от вкладки с помощью Angular Ionic 4 - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть рабочий процесс, где пользователи могут редактировать информацию о песне.Когда пользователь находится на странице песни, он может нажать кнопку редактирования, чтобы открыть страницу редактирования.Например, если пользователь просматривает отправку и хочет изменить ее, он будет переходить со страницы выпуска на страницу отправки, используя navigateByURL(tabs/(submit:submit/:artist/:submission):

/tabs/(home:release/isrk2mpkiq) до ->

/tabs/(submit:submit/2zmrsXMHxagFz6vI2cD7r6/isrk2mpkiq)

(обратите внимание, как они расположены на двух разных вкладках / выходах: Главная и Отправить)

Режим редактирования определяется подпиской на параметры маршрута и если :artist (2zmrsXMHxagFz6vI2cD7r6) и:submission (isrk2mpkiq) присутствует в URL-адресе, тогда мы знаем, что нужно отобразить приглашение на редактирование (со всеми деталями, введенными во входные данные) вместо пустого приглашения на отправку, используя следующее в ngOnInit() на странице отправки:

this.route.params.subscribe(
  (params: Params) => {
    if (params['artist'] && params['submission']) {
      this.submissionEdit(params['artist'], params['submission'])
    } 
  }
)

Как только пользователь завершает редактирование, обновления сохраняются, и пользователь перенаправляется обратно на страницу отправки (таким образом, удаляясь от вкладки отправки) с:

navigateByUrl('tabs/(home:release/${this.submission.submissionUID})')

Все отлично работает до тех пор, пока пользователь снова не нажмет кнопку редактирования на странице песни

Когда они это сделают, они будут перенаправлены обратно на этот URL-адрес страницы отправки, но так какНа вкладке отправки маршрут не изменился, подписка на параметры маршрута не обновилась и не смогла запустить метод this.submissionEdit() внутри подписки, что не привело к заполнению формы отправки существующими данными.

Итак, мой вопрос , после того как пользователь отправляет редактирование, как мне сбросить конкретную вкладку / стек отправки обратно на tabs/(submit:submit), чтобы при повторном нажатии пользователем редактировать URL-адресменяется и может ли обновляться подписка на параметры?

Я использую Ionic 4 AngularДайте мне знать, какая еще информация вам может понадобиться, спасибо!

1 Ответ

0 голосов
/ 17 апреля 2019

Мне кажется, у меня есть временное решение, которое, похоже, не имеет побочных эффектов (пока).

На каждой вкладке в tabs.page.html:

<ion-tab-button tab="tab1" (click)="openTab('tab1', $event)">
    <ion-label>Tab</ion-label>
</ion-tab-button>

Вкл.tabs.page.ts:

async openTab(tab: string, evt: MouseEvent) {
    const tabSelected = this.tabs.getSelected();
    evt.stopImmediatePropagation();
    evt.preventDefault();
    return tabSelected !== tab
      ? await this.navCtrl.navigateRoot(this.tabs.outlet.tabsPrefix + '/' + tab)
      : this.tabs.select(tab);
}
...