7

このAngular でのルーティングのチュートリアルに従っていましたが、うまくいきません。「comp」セレクターを使用してHTMLコードを配置すると機能しますが、ルーターアウトレットでルーティングしようとすると、からのヘッダーが表示されるだけindex.htmlです。

私は次のものを持っています:

main.ts:

import * as ng from 'angular2/angular2';
import {Comp} from './comp';
@ng.Component({
    selector: 'my-app'
})
@ng.View({
    directives: [ng.formDirectives, ng.RouterOutlet],
    template: `
    <nav>
      <ul>
        <li>Start</li>
        <li>About</li>
        <li>Contact</li>
      </ul>
    </nav>
    <main>
      <router-outlet></router-outlet>
    </main>
  `
})
@ng.RouteConfig([{ path: '/', component: Comp }])
class AppComponent {
}
ng.bootstrap(AppComponent, [ng.routerInjectables]); 

comp.ts:

import * as ng2 from 'angular2/angular2';
@ng2.Component({
    selector: 'comp'
})
@ng2.View({
    template: `
    <h1>hi<h1>
  `
})
export class Comp {
    constructor() {
    }
}

index.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Test3</title>
    <script src="lib/traceur/traceur.js"></script>
    <script src="lib/system.js/dist/system.js"></script>
    <script src="lib/angular2-build/angular2.js"></script>
    <script src="lib/angular2-build/router.dev.js"></script>
    <script>
        System.config({
            packages: { 
                'js': {
                    defaultExtension: 'js'
                } 
            }
        });
        System.import('/js/main');
    </script>
</head>
<body>
    <h1>Hello There</h1>
    <my-app></my-app>
</body>
</html>

4

7 に答える 7

7

重大な変更が導入されましたangular@2.0.0-alpha.41

  • routerInjectablesに改名されましたROUTER_BINDINGS

  • ROUTER_BINDINGSその後、改名されたROUTER_PROVIDERS

余談ですが、最近多くの重大な変更が行われているため、信頼できるオンラインの例は事実上ありません。

使用するROUTER_PROVIDERS

以下が含まれます。

  • RouteRegistry- 定義されたルートのレジストリ
  • LocationStrategy = PathLocationStragety- パスでルートを照合

これは基本的に、ルーターをデフォルト設定でブートストラップするためのショートカットです。

例えば:

@Component ({
...
})
@View ({
...
})
@RouteConfig ({
...
})
class App {}

bootstrap(App, [ ROUTER_PROVIDERS ]);

ソース:

于 2015-10-30T16:45:03.723 に答える
4

ここでルーティングの現在最も一般的な作業例を見つけることができます

app/app.tsを調べます:

import {Component, bind, bootstrap, ViewEncapsulation} from 'angular2/angular2';
import {
  RouteConfig,
  ROUTER_DIRECTIVES,
  ROUTER_BINDINGS,
  ROUTER_PRIMARY_COMPONENT
} from 'angular2/router';

import {Home} from './components/home/home';
import {About} from './components/about/about';
...
@Component({ /// your root component
})
@RouteConfig([
  { path: '/', component: Home, as: 'Home' },
  { path: '/about', component: About, as: 'About' }
])
class App {}

bootstrap(App, [
  ROUTER_BINDINGS,
  bind(ROUTER_PRIMARY_COMPONENT).toValue(App)
]);
于 2015-10-15T14:54:34.190 に答える
2

On the tutorial you are following they finally stated it's deprecated, you can read it in bold:

Deprecation Note

We are very sorry, but this article is out of date and has been deprecated. Usually, we keep our articles up to date, however, with this one it's very likely that we've written a complete new version.

If you wish to use the routing component I would suggest to update your Angular 2 version. Be aware that quite a few settings has changed in RC, so you'll probably will need to set up the config again from the official site and make few changes.

Another user had similar issue like you here and with upgrading the problem was solved. Just upgrade the version, fix the config and use this official documentation from here

于 2016-05-17T08:10:48.127 に答える
1

答えには遅すぎるかもしれませんが、答え全体を読むのは面倒です、試してみてください:P

  • Viewangular2にはもうありません。まだ@view注釈を使用している場合、何らかのエラーが発生する可能性があります。コンポーネントのみがすべてのオプションを保持する場所です。

公式によると、@View メタデータ デコレータは beta.10 リリースで廃止されました。

  • ROUTER_DIRECTIVESangular2でルーティングに関連することをしているときに必要です。ROUTER_DIRECTIVESディレクティブのリストにrouterLink挿入することにより、router-outletルーティングに必要なプロパティがコンポーネントで自動的に利用可能になります。ROUTER_DIRECTIVESすべてのコンポーネントのディレクティブ リストに毎回注入するのではなく、アプリのブートストラップ時に注入できます。

ルーティングに関連するいくつかの有用な回答へのリンクを投稿する回答全体を投稿する代わりに、こちらも参照してください-

于 2016-05-07T07:38:07.473 に答える
0

以下のように、パスの / を削除してみてください: @ng.RouteConfig([{ path: "", component: Comp }])。

ルート構成でスラッシュを指定する必要はありません。

于 2016-12-03T13:37:51.090 に答える
-1

エラーメッセージを提供していないため、ビデオチュートリアルhttps://youtu.be/ZsGRiHSaOxMを含む実際のサンプルhttps://github.com/ajtowf/ng2_playを次に示します。

于 2015-09-09T12:08:09.683 に答える
-1

angular2 ルーターは驚異的に進化しました。変更が反映されていない古いチュートリアルに固執しているすべての人にとって、大きな驚きの準備ができているからです。angular2の最前線にある私のinventmanプロジェクトをご覧になることをお勧めします。これはクローズドソースのプロジェクトであるため、私はそれを推進していません。そこから、ルーティングとほぼすべての angular2 原則についてのアイデアを得ることができます。他のチュートリアルとは異なり、本格的な作業プロジェクトです。

https://github.com/debanjanbasu/inventman

于 2015-10-14T02:45:16.950 に答える