Angular 2-Version verwenden: 2.0.0-alpha.44Wie Kind Routen in Angular 2
ich versucht habe Routing in Angular 2. zu tun Obwohl ich in der Lage war, den normalen Routing getan zu tun Ich stehe vor einigen Problemen, wenn ich Kinderrouten einführe. Hier ist das Beispiel auf PLNKR (http://plnkr.co/edit/Y5doqU1WcEe4Ldr7KfPJ)
Unten ist der Code für die Kurzübersicht. Ich versuche, unter Routing
App
/\
/\
HomeCmp HelloCmp
\
\
ChildCmp
Und unten zu erreichen ist, wie ich meine Pfade konfiguriert haben
import {bootstrap, bind, Component, View} from 'angular2/angular2'
import {RouteConfig, RouteParams, ROUTER_DIRECTIVES, APP_BASE_HREF, ROUTER_BINDINGS} from 'angular2/router'
@Component({
selector: 'child-cmp'
})
@View({
template: `
<div>
<h3>Whats up</h3>
</div>
`
})
class ChildCmp { }
// ************************ Hello Component ***********************************
@Component({
selector: 'hello-cmp'
})
@View({
template: `
<div>
<h2>Hello there !</h2>
<router-outlet></router-outlet>
</div>
`,
directives: ROUTER_DIRECTIVES
})
@RouteConfig([
{path: '/', component: ChildCmp, as: 'ChildCmp'}
])
class HelloCmp { }
//************************** HOME Component ***********************************
@Component({
selector: 'home-cmp'
})
@View({
template: `
<div>
<h2>Welcome Home</h2>
</div>
`
})
class HomeCmp {}
//************************* APP Component *************************************
@Component({
selector: 'app-cmp'
})
@View({
template: `
<div>
<h1>Hello {{message}}!</h1>
<a [router-link]="['./HomeCmp']">home</a>
<a [router-link]="['./HelloCmp']">hello</a>
<hr>
<router-outlet></router-outlet>
</div>
`,
directives: ROUTER_DIRECTIVES
})
@RouteConfig([
{path: '/', component: HomeCmp, as: 'HomeCmp'}
{path: '/hello/...', component: HelloCmp, as: 'HelloCmp'}
])
export class App {
message:string = 'world';
}
bootstrap(App, [
ROUTER_BINDINGS,
bind(APP_BASE_HREF).toValue(location.pathname)
]);
Wenn ich Kind Routen entfernen es funktioniert gut. Aber mit Kinderrouten komme ich unter Fehler.
EXCEPTION: Link "["HelloCmp"]" does not resolve to a terminal or async instruction. in [null]
Ich folgte dem Artikel erwähnt here. Aber nicht in der Lage, es zum Laufen zu bringen. Kann mir bitte jemand helfen? Danke
@Pradeep Jain Vielen Dank. Was ist, wenn ich die Route vom Code aufrufen und nicht [Router-Link] verwenden möchte? Wie zum Beispiel im obigen Beispiel mit router.navigate (['./ HelloCmp']). –
@Pradeep Verstanden. Wir müssen router.navigate verwenden (['./ HelloCmp', 'ChildCmp'). Es wurde nach dem Lesen des von Ihnen vorgeschlagenen Links klar. Auch ich fand einen weiteren guten Link (https://angular.io/docs/js/latest/api/router/RouterLink-class.html) –
werden Sie plunkr, die Verwendung von router.navigate, wie Sie sagten, getan haben mit diesem. –