Nativescript RadSideDrawer проблема с маршрутизацией
Попытка использовать NativeScript RadSideDrawer с angular с помощью этого примера: https://gist.github.com/NathanWalker/e8f4f7c42af04fc725764a9867936e3d
Следующая ошибка маршрутизации возникает при переходе к маршруту /home/feed:
JS: Unhandled Promise rejection: Cannot find primary outlet to load 'FeedComponent' ; Zone: <root> ;
Task: Promise.then ; Value: Error: Cannot find primary outlet to load 'FeedComponent' Error: Cannot find primary outlet to load 'FeedComponent'
Маршруты, которые не используют боковой ящик (то есть, у них нет "домашнего" родителя), работают нормально.
app.component.ts (корневой компонент)
import { Component } from '@angular/core';
@Component({
selector: 'ppc-app',
template: '<StackLayout><page-router-outlet></page-router-outlet></StackLayout>',
styleUrls: []
})
export class AppComponent {}
app.routes.ts
export const routes = [
{ path: 'home', component: HomeComponent,
children: [
{ path: 'feed', component: FeedComponent } <-- this route fails
]
},
{ path: 'login', children: [
{ path: '', component: LoginComponent }, <-- these routes work
{ path: 'type', component: ChooseTypeComponent } <-- these routes work
]}
];
home.component.ts
<ActionBar title="Plant Powered Community">
<ActionItem (tap)="toggle()">
<!-- example: using font-awesome for hamburger menu but you can use whatever you'd like -->
<Button class="fa" text=""></Button>
<!-- however in your project, would be easier to use this plugin: https://github.com/NathanWalker/nativescript-fonticon -->
</ActionItem>
</ActionBar>
<RadSideDrawer #drawer [transition]="sideDrawerTransition" selectionBehavior="None">
<StackLayout tkDrawerContent>
<!-- anything you want in drawer -->
<!-- for example: -->
<!-- you want options {exact: true} on the first one because otherwise it would be considered active when 'Other Page' in active as well -->
<Button text="Home" [nsRouterLink]="['/home']" nsRouterLinkActive="active" [nsRouterLinkActiveOptions]="{exact:true}"></Button>
<Button text="Other Page" [nsRouterLink]="['/home/otherPath']" nsRouterLinkActive="active"></Button>
</StackLayout>
<StackLayout tkMainContent>
<router-outlet></router-outlet>
</StackLayout>
</RadSideDrawer>
1 ответ
Вероятно, это структура в файле app.routes.ts
export const APP_ROUTES: Routes = [
{
path: '',
redirectTo: '/home/feed',
pathMatch: 'full'
},
{
path: "home",
component: HomeComponent,
children: [
{path: "login", component: LoginComponent},
{path: 'type', component: ChooseTypeComponent },
{path: 'feed', component: FeedComponent }
]
},
];
Я создал простой пример RadSideDrawer, посмотрите, поможет ли это.