[解決済み】Angular2 Exception: routerLink'が既知のネイティブプロパティではないため、バインドできない。
質問
Angular2のベータ版はまだ新しいので、あまり情報がありませんが、かなり基本的なルーティングと思われるものを行おうとしています。
のクイックスタートコードやその他のスニペットでハックしています。 https://angular.io のサイトでは、以下のようなファイル構成になっています。
angular-testapp/
app/
app.component.ts
boot.ts
routing-test.component.ts
index.html
以下のようにファイルが配置されている状態です。
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 { }
このコードを実行しようとすると、エラーが発生します。
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
ここに何となく関連する問題を発見しました。 angular2.0.0-beta.0 にアップグレードすると、ルータリンクディレクティブが壊れる。 . しかし、回答の一つにある "working example" はベータ以前のコードに基づいています - それはまだ十分に動作するかもしれませんが、私は私が作成したコードが動作しない理由を知りたいのです。
何かご指摘がありましたら、よろしくお願いします。
解決方法は?
RC.5
をインポートします。
RouterModule
以下もご参照ください。
https://angular.io/guide/router
@NgModule({
imports: [RouterModule],
...
})
RC.2
app.routes.ts
import { provideRouter, RouterConfig } from '@angular/router';
export const routes: RouterConfig = [
...
];
export const APP_ROUTER_PROVIDERS = [provideRouter(routes)];
main.ts
import { bootstrap } from '@angular/platform-browser-dynamic';
import { APP_ROUTER_PROVIDERS } from './app.routes';
bootstrap(AppComponent, [APP_ROUTER_PROVIDERS]);
<=RC.1
あなたのコードがありません
@Component({
...
directives: [ROUTER_DIRECTIVES],
...)}
のようなディレクティブは使用できません。
routerLink
または
router-outlet
を使用することで、コンポーネントにそれらを知らせることなく
Angular2ではディレクティブ名は大文字と小文字を区別するように変更されましたが、要素では依然として
-
のように名前に
<router-outlet>
を必要とする web-components の仕様と互換性を持たせるためです。
-
をカスタム要素の名前として使用します。
グローバルに登録する
を作るには
ROUTER_DIRECTIVES
グローバルに利用できるようにするには、このプロバイダを
bootstrap(...)
:
provide(PLATFORM_DIRECTIVES, {useValue: [ROUTER_DIRECTIVES], multi: true})
を追加する必要はありません。
ROUTER_DIRECTIVES
を各コンポーネントに追加します。
関連
-
[解決済み】「ルーターリンク」は既知のプロパティではないため、バインドできない
-
[解決済み】angularでpreflightのレスポンスがHTTP okステータスにならない。
-
[解決済み] Angular 4: コンポーネントファクトリが見つかりません。@NgModule.entryComponents に追加しましたか?
-
[解決済み] ngModel' は 'input' の既知のプロパティではないため、バインドできません。
-
[解決済み] formGroup' は 'form' の既知のプロパティではないため、バインドできません。
-
[解決済み] Angularのエラーです。"Can't bind to 'ngModel' because it isn't a known property of 'input'"."
-
[解決済み] 例外が発生しました。既知のネイティブプロパティではないため、'ngFor'にバインドできない
-
[解決済み】'formControl'は'input'の既知のプロパティではないのでバインドできない - Angular2 Material Autocomplete問題
-
[解決済み】Angularの例外。ngForIn'は既知のネイティブプロパティではないため、バインドできない
-
[解決済み】'ngForOf'は'tr'の既知のプロパティではないのでバインドできない(最終リリース)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] node_modules が空になったので、`npm install`を実行する必要があるかもしれない。
-
[解決済み] 型 '{}' は型 '{ title: string; text: string; }' に代入できません。
-
[解決済み] Angular 8 NgForはArray errorやAcces Control Allow originなどのIterableへのバインディングのみをサポートしています。
-
[解決済み] ActivatedRouteSnapshot の注入ができない。
-
[解決済み] ウェブストーム Must be lvalue」の意味するところ
-
[解決済み] "エラーです。オーバーレイのプロバイダがありません!"
-
[解決済み] Angularで電話番号の入力をフォーマットする
-
[解決済み] Angular 6でmouseoverとmouseoutを使用する方法
-
[解決済み] Angular 4 - "BrowserAnimationsModule "または "NoopAnimationsModule "のいずれかをアプリケーションに組み込んでください。
-
[解決済み] Angularのルーターリンクが対応するコンポーネントにナビゲートされない