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)
logs
undefined

为什么我得到的是
未定义的
,而不是我在
状态下设置的数据


如何访问传入
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@ShashankVivek
history.state
是浏览器窗口对象的字段..我没有定义它。。我在跟踪你,你能试试最新的答案并让我知道吗
ngOnInit(): void {
   console.log(history.state)
   console.log(history.state.data);
}