Javascript Angular:history.state.data返回未定义的数据对象,而不是上一个设置的数据对象?
我有一个订单表。每个表行代表一个订单实体,当用户单击特定行时,它应该重定向到一个新视图,其中包含单击订单的详细信息。这两个组件不是父组件和子组件,我希望将有关单击订单行的数据传递到导航页面。。 我尝试了以下方法Javascript Angular:history.state.data返回未定义的数据对象,而不是上一个设置的数据对象?,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个订单表。每个表行代表一个订单实体,当用户单击特定行时,它应该重定向到一个新视图,其中包含单击订单的详细信息。这两个组件不是父组件和子组件,我希望将有关单击订单行的数据传递到导航页面。。 我尝试了以下方法 <tr *ngFor="let order of allOrders" routerLink="../orderdetails" [state]=”{data:order}”> <td>{{order.orderRef}}<
<tr *ngFor="let order of allOrders" routerLink="../orderdetails" [state]=”{data:order}”>
<td>{{order.orderRef}}</td>
<td>{{order.receiptRef}}</td>
<td>{{order.customer}}</td>
<td>{{order.orderDate}}</td>
<td>{{order.salesMan}}</td>
<td>{{order.total}}</td>
<td>{{order.status}}</td>
<td>{{order.session}}</td>
<td>
</td>
</tr>
在ngOnInit()的内部,console.log(history.state)logs{navigationId:1}
但是console.log(history.state.data)
logsundefined
为什么我得到的是未定义的
,而不是我在状态下设置的数据
如何访问传入
state
属性的数据?经过一些研究,我发现state对非锚元素不起作用
为了解决这个问题,我们可以通过编程方式使用状态:
orders.html
<tr *ngFor="let order of allOrders" (click)="onNavToOrderDetails(order)">
<td>{{order.orderRef}}</td>
<td>{{order.receiptRef}}</td>
....
</tr>
orderDetails.ts
import { Router } from '@angular/router';
constructor(
private router: Router
) {}
onNavToOrderDetails(order: Order) {
this.router.navigate(['routetodetailscomponent'], { state: {data: order} });
}
ngOnInit(): void {
console.log(history.state)
console.log(history.state.data);
}
我也有同样的问题。当我导航到下一个组件时,History.state只是空的。原因是我不小心执行了一个命令
\u router.navigate([]{relativeTo:this.\u activatedRoute,queryParams:{search:searchqueryparams},queryParams:'merge'})
通过pageload的构造函数中的订阅,该订阅用于将任何searchqueryparams持久化到url。
即使组件保持不变,router.navigate也会覆盖旧的历史状态。因此,只需在再次导航之前保存旧状态,就可以为我解决问题。您能否为包含
历史记录的组件
提供更多代码。状态
。我认为您做得不对,但我需要查看整个代码以帮助您修复it@ShashankVivekhistory.state
是浏览器窗口对象的字段..我没有定义它。。我在跟踪你,你能试试最新的答案并让我知道吗
ngOnInit(): void {
console.log(history.state)
console.log(history.state.data);
}