Offensichtlich ist die Beta für Angular2 neuer als neu, daher gibt es nicht viele Informationen, aber ich versuche, das zu tun, was ich für ein ziemlich einfaches Routing halte.
Das Hacken mit dem Schnellstartcode und anderen Ausschnitten von der https: //angular.io-Website hat zu der folgenden Dateistruktur geführt:
angular-testapp/
app/
app.component.ts
boot.ts
routing-test.component.ts
index.html
Die Dateien werden wie folgt gefüllt:
index.html
<html>
<head>
<base href="/">
<title>Angular 2 QuickStart</title>
<link href="../css/bootstrap.css" rel="stylesheet">
<!-- 1. Load libraries -->
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="node_modules/angular2/bundles/router.dev.js"></script>
<!-- 2. Configure SystemJS -->
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('app/boot')
.then(null, console.error.bind(console));
</script>
</head>
<!-- 3. Display the application -->
<body>
<my-app>Loading...</my-app>
</body>
</html>
boot.ts
import {bootstrap} from 'angular2/platform/browser'
import {ROUTER_PROVIDERS} from 'angular2/router';
import {AppComponent} from './app.component'
bootstrap(AppComponent, [
ROUTER_PROVIDERS
]);
app.component.ts
import {Component} from 'angular2/core';
import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS, LocationStrategy, HashLocationStrategy} from 'angular2/router';
import {RoutingTestComponent} from './routing-test.component';
@Component({
selector: 'my-app',
template: `
<h1>Component Router</h1>
<a [routerLink]="['RoutingTest']">Routing Test</a>
<router-outlet></router-outlet>
`
})
@RouteConfig([
{path:'/routing-test', name: 'RoutingTest', component: RoutingTestComponent, useAsDefault: true},
])
export class AppComponent { }
routing-test.component.ts
import {Component} from 'angular2/core';
import {Router} from 'angular2/router';
@Component({
template: `
<h2>Routing Test</h2>
<p>Interesting stuff goes here!</p>
`
})
export class RoutingTestComponent { }
Der Versuch, diesen Code auszuführen, führt zu folgendem Fehler:
EXCEPTION: Template parse errors:
Can't bind to 'routerLink' since it isn't a known native property ("
<h1>Component Router</h1>
<a [ERROR ->][routerLink]="['RoutingTest']">Routing Test</a>
<router-outlet></router-outlet>
"): AppComponent@2:11
Ich habe hier ein vage verwandtes Problem gefunden; Router-Link-Anweisungen sind nach dem Upgrade auf angle2.0.0-beta.0 fehlerhaft . Das "Arbeitsbeispiel" in einer der Antworten basiert jedoch auf Pre-Beta-Code - der möglicherweise noch funktioniert, aber ich würde gerne wissen, warum der von mir erstellte Code nicht funktioniert.
Alle Hinweise wären dankbar!
@Component({selector: "app"}) @View({templateUrl: "app.html", directives: [ROUTER_DIRECTIVES, RouterLink]})
directives: [ROUTER_DIRECTIVES]
und Wechseln von [Router-Link] zu [Router-Link] wird der Fehler nicht mehr angezeigt.
directives: [ROUTER_DIRECTIVES]
.