Nativescript Angular, не удается восстановить исходную страницу

#angular #nativescript

#angular #nativescript

Вопрос:

в моем Nativescript с приложением angular я не могу вернуться к предыдущей странице, если в стек добавлена другая страница.

Итак, я в основном перехожу к моему chat-window компоненту из моего main-component в коде следующим образом:

 this.router.navigate(['/chat-window'], {transition: {name: 'slideLeft'}});
  

На данный момент моя панель действий показывает кнопку «Назад», которая работает нормально! Это возвращает меня к main-component
Затем я перехожу с панели действий моего chat-window на chat-history вот так:

 <ActionItem [nsRouterLink]="['/chat-history']" pageTransition="slideLeft" icon="res://notification"></ActionItem>
  

Когда я нажимаю кнопку «Назад» сейчас, все возвращается к chat-window ожидаемому состоянию. И теперь есть еще одна кнопка возврата, которая должна привести к основному компоненту. Но то, что работало раньше, больше не работает. Я не получаю ошибок, но я могу нажимать кнопку «Назад» столько, сколько захочу, это не работает.

Почему невозможно выполнить Backtopreviouspage два раза подряд в стопке страниц? Или я делаю это неправильно?

Вот мои маршруты:

 const routes: Routes = [

    {path: '', redirectTo: '/auth-start', pathMatch: 'full'},
    {path: 'auth-start', component: AuthStartComponent},
    { path: "tabview", component: TabviewComponent,
        children: [
            {path: "home", component: HomeComponent, outlet: 'homeOutlet'},
            {path: "chat-rooms", component: ChatRoomsComponent, outlet: 'chatRoomsOutlet'},
            {path: "user-list", component: UserListComponent, outlet: 'userListOutlet'},
            {path: "profile", component: ProfileComponent, outlet: 'profileOutlet'}
        ] },
    {path: "register", component: RegisterComponent},
    {path: "login", component: LoginComponent},
    {path: "chat-window", component: ChatWindowComponent},
    {path: "chat-history", component: ChatHistoryComponent}
];
  

Моя кнопка возврата на панели действий:

 <NavigationButton *ngIf="CanGoBack"  text="Back" android.systemIcon="ic_menu_back" (tap)="onGoBack()"></NavigationButton>
  

связанный код:

 constructor(private rExtensions: RouterExtensions) {
  }


  get CanGoBack() {
    return this.rExtensions.canGoBackToPreviousPage();
  }

  onGoBack() {
    this.rExtensions.backToPreviousPage();
  }
  

Надеюсь, кто-нибудь сможет мне помочь.

Комментарии:

1. Должно быть возможно возвращаться столько раз, сколько вы перемещались вперед по фрейму (страница-маршрутизатор-розетка), так что this.router.backToPreviousPage() должно сработать. Можете ли вы поделиться примером игровой площадки, где проблема может быть воспроизведена?

2. В данный момент не могу этого сделать. Но не могли бы вы порекомендовать один раз внедрить routerExtensions в службу, а затем получить доступ к ней во всех моих компонентах? На данный момент я внедряю его в каждый компонент, где мне это нужно. Это неправильно?

3. Нет, внедрение его в каждый компонент не является проблемой.

4. Я добавил свои маршруты. Помогает ли это? Я перехожу из комнат чата в окно чата в историю чата, а затем хочу вернуться в комнату чата после нажатия кнопки «Назад» 2 раза, как описано

5. Иногда я получаю следующее уведомление в консоли: Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'? может ли это быть причиной?