2017-02-28 3 views
0

特定のコンポーネントのURLの末尾に後続のスラッシュを追加する方法はありますか? (私のクライアントではそれが必要なので、コメントを追加する必要はありません。末尾にスラッシュは使用しないでください)。角2のURLパラメータ

ありがとうございます。

+0

私はあなたがカスタムhttps://angular.io/docs/ts/latest/api/routerを必要と推測することは、このような何かを見ることができます/index/DefaultUrlSerializer-class.html –

答えて

1

ルートを後続のスラッシュで定義し、スラッシュでURLに移動するようにして、目的の結果を得ることができます。ルーターは後続のスラッシュのために予想していたレベルよりも深いレベルになるため、おそらくいくつかの頭痛が発生します。

ルート
{ 
    path: 'a/', 
    component: AComponent 
}, 
{ 
    path: 'list/b/', 
    component: BComponent, 
} 

あなたは、ルータが定義されたルートの後に空の文字列のパスを追加することによって、末尾にスラッシュを追加するために取得することができます。自分でスラッシュを書く場合は、[routerLink]="['/a/']"のように角を取り除きます。

リンク
<p><a [routerLink]="['/a', '']">Component A</a></p> 

または

<p><a [routerLink]="['../a', '']">Component A</a></p> 
プログラムによる移動
this.router.navigate(['/a', '']); 

Demo

0

カスタムUrlSerializerを実装しようとすることができます。次に、あなたのNgModuleにそれを提供

import { DefaultUrlSerializer, UrlTree } from '@angular/router'; 

export class CustomUrlSerializer extends DefaultUrlSerializer { 
    parse(url: string): UrlTree { 
     return super.parse(url); 
    } 

    serialize(tree: UrlTree): string { 
     let url = super.serialize(tree); 
     url = url.length > 1 ? url += '/' : url; 

     return url; 
    } 
} 

@NgModule({ 
    declarations: [ 
    ... 
    ], 
    imports: [ 
    ... 
    ], 
    providers: [... 
       {provide: UrlSerializer, useClass: CustomUrlSerializer} 
       ], 
    bootstrap: [...] 
}) 
export class AppModule { } 
関連する問題