にパラメータを渡すだから私はこの/Person
ルータにperson.id
を渡したいです。コンポーネントには2角度 -</p> <pre><code><a [routerLink]="[/Person']">Person</a> </code></pre> <p>、私は以下のように<code><a></code>タグを持っているルート
<a [routerLink]="['/Person', person.id]">Person</a>
ハンドル:私はそれが角1
にパラメータを渡すだから私はこの/Person
ルータにperson.id
を渡したいです。コンポーネントには2角度 -</p> <pre><code><a [routerLink]="[/Person']">Person</a> </code></pre> <p>、私は以下のように<code><a></code>タグを持っているルート
<a [routerLink]="['/Person', person.id]">Person</a>
ハンドル:私はそれが角1
パスようにそれを渡すことができます:
this.route.params.subscribe(
(params : Params) => {
this.id = params["id"];
}
);
第二の方法:あなたは(ルートプロパティとしてなど)ActivatedRoute
を注入する必要がある。この例では
this.route.params.forEach(
(params : Params) => {
this.id = params["id"];
}
);
ような:
constructor(private route : ActivatedRoute) {}
あなたが購読している場合 - 退会することが重要ですObservable
を防止するメモリリーク。
フル例:
export class SimpleComponent implements OnInit, OnDestroy {
private id : number;
private route$ : Subscription;
constructor(private route : ActivatedRoute) {}
ngOnInit() {
this.route$ = this.route.params.subscribe(
(params : Params) => {
this.id = +params["id"]; // cast to number
}
);
}
ngOnDestroy() {
if(this.route$) this.route$.unsubscribe();
}
}
構成:
export const routes = [
...
{ path : 'Person/:id', component : ...},
...
];
また、@RouteConfig
はをを廃止予定です。
良い答え、いくつかのコメント。まず、 ''/Person''に一重引用符をつけていません。 第2に、[Routing and Navigation](https://angular.io/docs/ts/latest/guide/router.html#!#route-parameters)に従って、次のようなパラメータにもアクセスできます。 'ngOnInit { this.route.params.forEach(params:Params)=> { let id = + params ['id']; //(+)は文字列 'id'を数値 に変換します)} ' 最後に、subscribeを使用している場合は、ngOnDestroyの登録を解除することを忘れないでください。 – jjokela
一重引用符に気をつけてくれてありがとう - 私は編集した投稿。退会について - これは明らかです。メモリリークを防ぐには、それを行うことが重要です。** 'this.route.params.subscribe( (paramsは:I **は答えるため:) –
をコンポーネントにハンドルを追加するPARAMS)=> { this.id =用のparams [ "IDが"]; } );これは、ユーザーがナビゲートされるクラス、つまりngOnInit()メソッドでwritternされます。右? –
にparams
よう@RouteConfig
にそれを扱う&渡すことができますどのようにリンクをルータに
<a [routerLink]="[/Person', propertyWithId]">Person</a>
私の場合、[routerLink]
の指示は私のためには機能しませんでした。だから私はプログラムでそれをやらなければならなかった。
コンポーネントテンプレート:
<a (click)="goToEdit(person.id)" >Edit</a>
コンポーネントクラス:
import { Router } from '@angular/router';
export class PersonComponent{
constructor(private _route: Router){ }
goToEdit(id){
this._route.navigate(['Person/' + id]);
}
}
何の '@ RouteConfig'はありません。どのAngular2バージョンを使用していますか? –