我创建了一个测试应用程序来玩Angular2 Beta。我正在尝试从父路由链接到子路由。
每次我尝试将子链接添加到设置时,它都会抛出以下错误"异常:链接"["/settings"]"未解析为终端指令AppComponent@8:10]"
父路由运行良好。当涉及到子路由时,它会出现错误。这是我迄今为止所拥有的。
app.component.ts
import {Component} from 'angular2/core';
import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS} from 'angular2/router';
import {appsComponent} from './apps.component';
import {HomeComponent} from './Home.Component';
import {GPSComponent} from './GPS.component';
import {SettingsComponent} from './Settings.component';
@Component({
selector: 'my-app',
directives: [ROUTER_DIRECTIVES],
template: `
<div class="container">
<div class="row">
<div class="col-md-12">
<ul class="nav nav-pills">
<li><a [routerLink]="['/Home']">Home</a></li>
<li><a [routerLink]="['/Apps']">Apps</a></li>
<li><a [routerLink]="['/GPS']">GPS</a></li>
<li><a [routerLink]="['/Settings']">Settings</a></li>
</ul>
</div>
</div>
</div>
<router-outlet></router-outlet>
`
})
@RouteConfig([
{ path: '/', component: HomeComponent, as: 'Home' },
{ path: '/apps', component: appsComponent, as: 'Apps'},
{ path: '/gps', component: GPSComponent, as: 'GPS' },
{ path: '/settings/...', component: SettingsComponent, as:'Settings' }
])
export class AppComponent {}
Settings.component.ts
import {Component} from 'angular2/core';
import {Router} from 'angular2/router';
import {UIComponent} from './UI.component';
import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS, RouterOutlet} from 'angular2/router';
@Component({
selector: 'settings',
directives: [ROUTER_DIRECTIVES],
template: `<h1>Settings Page</h1>
<ul class="nav nav-stacked">
<li><a [routerLink]="['/settings','/UI']">Desktop UI</a></li>
</ul>
<router-outlet></router-outlet>
`
})
@RouteConfig([
{ path: '/ui', component: UIComponent, as: 'UI'}
])
export class SettingsComponent {}
主.ts
import {bootstrap} from 'angular2/platform/browser';
import {AppComponent} from './app.component';
import {SettingsComponent} from './Settings.component';
import {ROUTER_PROVIDERS} from 'angular2/router';
import {provide} from 'angular2/core';
import {APP_BASE_HREF} from 'angular2/router';
import {LocationStrategy, Location, HashLocationStrategy } from 'angular2/router';
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
provide(APP_BASE_HREF, { useValue: '/' }),
provide(LocationStrategy, { useClass: HashLocationStrategy })
]);
您已经为SettingsComponent
声明了path: '/settings/...'
路由路径,末尾的三个点使该路由成为非终端。这意味着您无法导航到/settings
,必须提供子路径,即:/settings/info
。