在 Angular 中路由时我们可以发送对象吗 4

Can we send objects when routing in Angular 4

我试图在 Angular 4 中改变路线时传递对象。基本上,我试图模仿在 Angular JS 中使用 UI 路由器可以实现的东西.我之前的应用使用 UI Router 模块用于 Angular JS 的路由和导航。

在那里,我可以通过提供状态并使用 $state.go() 方法使用对象来路由到 URL。

可以使用 $stateParams 检索传递给路由的对象,并可以在该路由的控制器中使用。使用 Angular 4 个默认路由器实现此功能,我相信是不可能的。

在 Angular 4 中进行路由时,是否可以通过某种方式传递对象,并且激活的组件可以检索这些对象。

当用户硬刷新页面时共享服务不会丢失数据吗?另外,您对使用 UI 路由器有何看法。

我认为在路由上传递对象是一个很糟糕的主意。

我正在使用 "shared-services" 在路由上将对象从一个组件传递到另一个组件。

例如,为该对象构建一个带有 getter 和 setter 的共享服务,并在路由到新组件时设置它,并在初始化新组件时从该服务获取它。

该服务应在这两个组件所在的父模块中提供。

从 Angular Router 7.2 开始,您可以将其作为 NavigationExtras 发送并从 window 历史记录中检索。

this.router.navigate(['/foo'], {state: {bar: {...}}});

甚至

<a [routerLink]=”/foo” [state]=”{ bar: {...}}”>Foo</a>

然后您可以在导航完成时从历史对象中获取数据

history.state.bar

这是否是个好主意,我不能说但是 见 https://medium.com/ableneo/how-to-pass-data-between-routed-components-in-angular-2306308d8255https://angular.io/api/router/NavigationExtras#state

了解更多信息。