13

location.path() を使用して、/about、/、/news のような現在のルートのパスを取得できます。しかし、代わりにエイリアスを取得するにはどうすればよいですか (ルート定義の「as」部分)。

{ path: '/about', as: 'About', component: About }

出来ますか?

4

5 に答える 5

2

それを取得する方法はわかりませんが、別の方法として RouteData を使用してルートのエイリアスを渡す方法があります

https://angular.io/docs/ts/latest/api/router/RouteData-class.html

于 2015-12-27T12:16:23.947 に答える
2

代わりに、Router インスタンスを使用する必要があります。

コンポーネントで、コンストラクターに次のように挿入します。

constructor(public router: Router)

よりも、次の方法でコンポーネントの名前を取得できます。

this.router.currentInstruction.component.routeName

ルーター構成から取得する方法がわかりません。ただし、RouterLink ディレクティブは、開始するのに適切な場所である必要があります: https://angular.io/docs/ts/latest/api/router/RouterLink-directive.html

于 2015-12-27T20:41:10.440 に答える
1

>= Angular2 RC.x の場合 (新しいルーター)

新しいルーターにはもうエイリアスはありません。

ローカル コンポーネントの相対ルートを取得できます

  routerOnActivate(curr:RouteSegment, prev?:RouteSegment, currTree?:RouteTree, prevTree?:RouteTree):void {
    console.log(curr.stringifiedUrlSegments);
  }

またはフルパスを使用して

constructor(private router:Router) {}

  routerOnActivate(curr:RouteSegment, prev?:RouteSegment, currTree?:RouteTree, prevTree?:RouteTree):void {
    console.log(this.router.serializeUrl(tree));
  }

また

constructor(router:Router, private location:Location) {
  router.changes.subscribe(() => {
    console.log(this.location.path());
  });
}
于 2016-05-14T17:50:35.380 に答える
0

可能なエイリアスのリストがわかっている場合は、 と の組み合わせを使用して現在のエイリアスの名前を見つけることができrouter.generateますroute.isActiveRoute

たとえば、3 つのステップを持つウィザードがあります。配列にステップ エイリアスのリストがあります。

private wizardAliases = [
    'wizardStep1',
    'wizardStep2',
    'wizardStep3'
];

次に、次のコードを使用して現在のエイリアス名を特定します。

const alias = this.wizardAliases
    .map(alias => ({ alias, navigationInstruction: this.router.generate([alias]) }))
    .filter(x => this.router.isRouteActive(x.navigationInstruction))
    .map(x => x.alias);

if (alias.length === 1) {
    console.log(`alias is ${alias}`);
}

免責事項: これがルート パラメーターで機能するかどうかは確認していません。

于 2016-03-29T13:29:14.270 に答える