Jelas beta untuk Angular2 lebih baru daripada yang baru, jadi tidak ada banyak informasi di luar sana, tapi saya mencoba melakukan apa yang saya pikir merupakan beberapa rute yang cukup mendasar.
Meretas dengan kode mulai cepat dan cuplikan lainnya dari situs web https://angular.io telah menghasilkan struktur file berikut:
angular-testapp/
app/
app.component.ts
boot.ts
routing-test.component.ts
index.html
Dengan file yang sedang diisi sebagai berikut:
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 { }
Mencoba menjalankan kode ini menghasilkan kesalahan:
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
Saya menemukan masalah yang samar-samar terkait di sini; arahan router-link rusak setelah memutakhirkan ke angular2.0.0-beta.0 . Namun, "contoh kerja" di salah satu jawaban didasarkan pada kode pra-beta - yang mungkin masih berfungsi, tetapi saya ingin tahu mengapa kode yang saya buat tidak berfungsi.
Pointer apa pun akan diterima dengan penuh syukur!
@Component({selector: "app"}) @View({templateUrl: "app.html", directives: [ROUTER_DIRECTIVES, RouterLink]})
directives: [ROUTER_DIRECTIVES]
dan perubahan dari [router-link] ke [routerLink] saya tidak lagi mendapatkan kesalahan.
directives: [ROUTER_DIRECTIVES]
.