#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()'?
может ли это быть причиной?