使用此示例尝试将NativeScript RadSideDrawer与angular一起使用: https://gist.github.com/NathanWalker/e8f4f7c42af04fc725764a9867936e3d
导航到路线/家庭/ 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'
不使用侧抽屉的路线(IE没有'家'父母)可以正常工作。
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>
答案 0 :(得分: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示例,看看它是否有帮助。