Nativescript + Angular, Как мне добраться до дочерних маршрутов в розетке с вложенными страницами? - PullRequest
1 голос
/ 02 апреля 2019

Я бы хотел, чтобы навигация в виде вкладок осуществлялась в приложении NS + Angular 7.

Вот мои текущие настройки:

приложение-routing.module.ts:

...

const routes: Routes = [
    { path: '', redirectTo: '/login', pathMatch: 'full' },
    { path: 'login', component: LoginComponent },
    { path: 'tabs', loadChildren: '~/app/tabs/tabs.module#TabsModule'; }
];

...

tabs.module.ts:

...
NativeScriptRouterModule.forChild([
            {   path: 'def',
                component: TabsComponent,
                children: [
                  {
                      path: 'market',
                      outlet: 'market',
                      component: NSEmptyOutletComponent,
                      loadChildren: '~/app/market/market.module#MarketModule'
                  },
                  {
                      path: 'list',
                      outlet: 'list',
                      component: NSEmptyOutletComponent,
                      loadChildren: '~/app/list/list.module#ListModule'
                  },
                  {
                      path: 'search',
                      outlet: 'search',
                      component: NSEmptyOutletComponent,
                      loadChildren: '~/app/search/search.module#SearchModule'
                  },
                  {
                      path: 'insight',
                      outlet: 'insight',
                      component: NSEmptyOutletComponent,
                      loadChildren: '~/app/insights/insights.module#InsightsModule'
                  },
                  {
                      path: 'explore',
                      outlet: 'explore',
                      component: NSEmptyOutletComponent,
                      loadChildren: '~/app/explore/explore.module#ExploreModule'
                  }
            ]}
          ])
...

и, наконец, один из 5 модулей маршрутизации, давайте перейдем к list-routing.module.ts:

...
const routes: Routes = [
    { path: '', redirectTo: 'list' },
    { path: 'list', component: ListComponent },
    { path: 'all', component: ListListComponent }
]
...

Я думаю, что я запутался из-за вкладок, появляющихся только после того, как вы пройдете экран входа в систему. После успешного входа я делаю:

this.router.navigate(['tabs/def'], {
                        transition: {
                          name: 'fade',
                          duration: 100,
                          curve: 'linear'
                        },
                        clearHistory: true
                    }

это выводит меня на рынок, показывая мой «домашний» экран. И затем, если я нажму на одну из вкладок, используя:

tabs.component.html:

<TabView class="fal" style="font-size: 20; padding: 3;" >
    <page-router-outlet *tabItem="{title: 'home'}" name="market"></page-router-outlet>
    <page-router-outlet *tabItem="{title: 'clipboard-list'}" name="list"></page-router-outlet>
    <page-router-outlet *tabItem="{title: 'search'}" name="search"></page-router-outlet>
    <page-router-outlet *tabItem="{title: 'lightbulb'}" name="explore"></page-router-outlet>
    <page-router-outlet *tabItem="{title: 'newspaper'}" name="insight"></page-router-outlet>
</TabView>

Затем меня ведут в правильную розетку. Вот в чем проблема: Компонент списка будет загружаться нормально, но как только я нажимаю на один из моих списков, чтобы попасть в ListListComponent, он говорит мне:

Error: Cannot match any routes. URL Segment: 'tabs/def'

Я настраиваю эту последнюю навигацию так:

this.router.navigate( [ { outlets: { list: [ '/all' ] } }], { relativeTo: this.route })

Я пробовал несколько комбинаций передачи URL «tabs / def / all» или «tabs / def», но безуспешно. Насколько я понимаю, я передаю URL в начале, но теперь, когда я вложен, мне нужно просто перейти к розетке. Так что мой последний синтаксис на этом последнем router.navigate?

Большое вам спасибо за помощь !!

1 Ответ

1 голос
/ 05 апреля 2019

Разобрался!Вам не нужно указывать розетку в модуле маршрутизации.Для всех, кто находит это:

Модуль маршрутизации функций:

const routes: Routes = [
    {   path: '',
        component: ListComponent,
        children: [
            {
                path: '',
                children: [
                    {   path: '', redirectTo: 'all' },
                    {   path: 'all', component: ListListComponent },
                    {   path: 'group', component: ListgroupComponent },
                ]
            }
        ]
    }
];

list.component:

<page-router-outlet></page-router-outlet>

навигация из ListListComp -> ListgroupComp (запускается при нажатии наэлемент):

this.router.navigate([ '../group' ], { relativeTo: this.route }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...