Don*_*ers 4 routerlink angular
我有一个带有@Input参数的角度组件,如下所示。
@Component({
selector: 'app-transmission-history'
})
export class TransmissionHistoryComponent implements OnInit {
@Input() theRecord: Record = null;
constructor(private _transmissionHistoryService: TransmissionHistoryService) { }
}
Run Code Online (Sandbox Code Playgroud)
在另一个组件中,我在标记中包含以下内容:
<app-transmission-history [theRecord]="selectedRecord"></app-transmission-history>
Run Code Online (Sandbox Code Playgroud)
完善。一切正常。
我需要将app-transmission-history组件移至独立页面。现在,我需要使用routerLink访问它,如下所示:
<a routerLink='/transmissionHistory'>{{selectedRecord.Name}}</a>
Run Code Online (Sandbox Code Playgroud)
我不知道如何在标记的routerlink中设置@Input参数。我需要将其设置为selectedRecord,我可以访问它。
我可以更改app-transmission-history组件以另一种方式接收参数。但是,如果我必须根据实现方式来更改实现,这似乎并不灵活。
请看一下路由器参数。你可以像这样传递你的参数:
<a [routerLink]="['/transmissionHistory', selectedRecord]">{{selectedRecord.Name}}</a>
比在你的组件中,你可以像这样检索它:
@Component({
selector: 'app-transmission-history'
})
export class TransmissionHistoryComponent implements OnInit {
theRecord: Record = null;
constructor(
private _transmissionHistoryService: TransmissionHistoryService,
private _route: ActivatedRoute
) { }
ngOnInit() {
this._route.params.subscribe(params => {
this.theRecord = params['record'];
});
}
}
Run Code Online (Sandbox Code Playgroud)
请记住在路由器配置中设置此参数:
{ path: 'transmissionHistory/:record', component: TransmissionHistoryComponent }
Run Code Online (Sandbox Code Playgroud)
小智 5
Use query parameter to pass object after converting to json string.
<a [routerLink]="['/transmissionHistory']"
[queryParams]="{record:selectedRecord | json }">
{{selectedRecord.Name}}
</a>
Run Code Online (Sandbox Code Playgroud)
In your component you can do something like this to read params:
@Component({
selector: 'app-transmission-history'
})
export class TransmissionHistoryComponent implements OnInit {
theRecord: Record = null;
constructor(
private _transmissionHistoryService: TransmissionHistoryService,
private _route: ActivatedRoute
) { }
ngOnInit() {
this._route.params.subscribe(params => {
this.theRecord = JSON.parse(params.record) as Record;
});
}
}
Run Code Online (Sandbox Code Playgroud)
And router config will look like as:
{ path: 'transmissionHistory', component: TransmissionHistoryComponent }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8714 次 |
| 最近记录: |