我有一個<a>
標籤像下面,角2 - 參數傳遞給路由
<a [routerLink]="[/Person']">Person</a>
所以我想給person.id
傳遞給該/Person
路由器。我怎樣才能將它傳遞&處理它@RouteConfig
像params
在角1
我有一個<a>
標籤像下面,角2 - 參數傳遞給路由
<a [routerLink]="[/Person']">Person</a>
所以我想給person.id
傳遞給該/Person
路由器。我怎樣才能將它傳遞&處理它@RouteConfig
像params
在角1
通行證到路由器鏈路:在組件
<a [routerLink]="['/Person', person.id]">Person</a>
手柄 :
this.route.params.subscribe(
(params : Params) => {
this.id = params["id"];
}
);
方式二:
this.route.params.forEach(
(params : Params) => {
this.id = params["id"];
}
);
在這個例子中,你必須注入ActivatedRoute
(例如,作爲路由屬性)這樣的:
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''中的開頭單引號。其次,根據[路由和導航](https://angular.io/docs/ts/latest/guide/router.html#!#route-parameters),你可以像這樣訪問參數: 'ngOnInit (){(params:Params)=> { let id = + params ['id']; //(+)將字符串'id'轉換爲數字 });'' 最後,如果您使用訂閱,請記得在ngOnDestroy上取消訂閱。 – jjokela
感謝您關注單引號 - 我編輯過的帖子。關於取消訂閱 - 這是顯而易見的。做到這一點很重要,以防止內存泄漏。我將其添加到回答:) –
**手柄組件:** 'this.route.params.subscribe( (PARAMS:PARAMS)=> { this.id =參數[ 「ID」]; } );'這個東西,它將在那個用戶將被導航的類中寫入,也就是在它的ngOnInit()方法中。對? –
您可以通過它像
<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版本? –