Как дифференцировать маршрутизацию при использовании Tabview / BottomNavigation для сохранения или удаления панели BottomNavigation - PullRequest
0 голосов
/ 29 февраля 2020

Это может быть больше из-за проблемы Angular Routing, чем NativeScript, но мое приложение использует компонент NativeScripts BottomNavigation. А при переходе от вкладки в этом компоненте к подкомпоненту он всегда сохраняет вкладки BottomNavigation в нижней части экрана. Я хотел бы сделать возможным переход на полностью «новую» страницу, у которой нет вкладок внизу

В моем модуле маршрутизации вкладок у меня есть:

const routes: Routes =[
    { path: '', redirectTo: '/default', pathMatch: 'full' },
    {

        path: "default", component: TabsComponent,  children: [
            {
                path: "profile",
                component: NSEmptyOutletComponent,
                loadChildren: () => import("~/app/profile/profile.module").then((m) => m.ProfileModule),
                outlet: "profileTab"
            },
            {
                path: "home",
                component: NSEmptyOutletComponent,
                loadChildren: () => import("~/app/home/home.module").then((m) => m.HomeModule),
                outlet: "homeTab"
            }

, а затем в моем модуле домашней маршрутизации:

const routes: Routes = [
    { path: "", redirectTo: "default" },
    { path: "default", component: HomeComponent },
    { path: "next", component: HomeNextComponent }
];

, поэтому, когда я нахожусь в home.component и пытаюсь перейти к "HomeNextComponent", я использую эту навигацию:

    this.router.navigate(['../next'], {
        transition: { name: 'slideLeft', duration: 250 },
        relativeTo: this.activatedRoute
    });

, которая переместит меня к HomeNextComponent, но он сохранит BottomNavigation, как я буду различать, когда я хочу "сохранить" или "удалить" BottomNavigation?

Ответы [ 2 ]

2 голосов
/ 29 февраля 2020

Я думаю, что проблема с компонентом приложения по умолчанию. Проверьте html код компонента приложения по умолчанию, возможно, вы используете общий низ html, только содержимое внутри <router-outlet></router-outlet>.

меняется только
0 голосов
/ 02 марта 2020

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

this.navBarStrip.visibility = 'collapse';

Где navBarStrip - это ссылка Viewchild на вкладку в нижней части панели навигации. Поэтому, когда загружается нижняя навигация, мы устанавливаем ссылку в сервисе. с этого момента мы называем tabService.hideTabs() на соответствующих страницах. Мы обнаружили, что трудно назвать его в нужное время, чтобы он выглядел и выглядел естественно. Попробуйте «загруженное» событие на новой странице, где вы хотите скрыть вкладки. Также вам понадобится метод showTabs (), чтобы отменить изменение видимости:

this.navBarStrip.visibility = 'visible';

Вот вам go. Это должно делать свое дело.

...