javascript - Angular:history.state.data 返回未定义而不是最后设置的数据对象?

标签 javascript angular typescript

我有一个订单表..每个表行代表一个订单实体,当用户单击特定行时,它应该重定向到带有单击订单详细信息的新 View 。这两个组件不是父级和子级,我想要将有关点击订单行的数据传递到导航页面..
我尝试了以下方法

 <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>

这会导致 View 导航到 Orderdetails
 ngOnInit(): void {
    console.log(history.state)
    console.log(history.state.data);
  }

ngOnInit() 内部 console.log(history.state)日志 {navigationId: 1}但是 console.log(history.state.data)日志 undefined .

为什么我收到 undefined而不是我在 state 上设置的数据?

如何访问我传递给 state 的数据属性(property)?

最佳答案

经过一番研究,我发现 状态不适用于非 anchor 元素 .
为了解决这个问题,在以编程方式进行路由时,我们可以使用状态:
订单.html

<tr *ngFor="let order of allOrders" (click)="onNavToOrderDetails(order)">
   <td>{{order.orderRef}}</td>
   <td>{{order.receiptRef}}</td>
   ....
</tr>
订单.ts
import { Router } from '@angular/router';

constructor(
   private router: Router
) {}

onNavToOrderDetails(order: Order) {
   this.router.navigate(['routetodetailscomponent'], { state: {data: order} });
}
orderDetails.ts
ngOnInit(): void {
   console.log(history.state)
   console.log(history.state.data);
}

关于javascript - Angular:history.state.data 返回未定义而不是最后设置的数据对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60134219/

相关文章:

asp.net - IIS 服务器中的 Angular 路由

typescript - 如何在静态类方法中引用提供者?

javascript - Observable 的转换

Javascript重定向只是刷新页面

javascript - Classic Asp 如何将生成的 HTML 保存到服务器上的文本文件中?

javascript - 如何在不再次调用 db.collection 的情况下获取文档并编辑数据?

javascript - 为什么我使用=(单个等于)的相等比较不能正常工作?

css - 无法在 Angular cli 新元素中加载样式

angular - Material 单选标签内容不会应用文本换行 CSS Angular

typescript - 方法重载不适用于 Typescript