将 Reactive Forms 组传递到路由器出口

Passing Reactive Forms group into router-outlet

我正尝试在多个组件之间共享我的响应式表单,但在尝试通过路由实现时我 运行 遇到了问题。我收到的错误: '无法绑定到 'group',因为它不是 'router-outlet'

的已知 属性

这是路由器:

<router-outlet [group]="turnoverService.turnoverForm"></router-outlet>

有没有办法通过路由将响应式表单传递给子组件?

仅当组件具有与绑定同名的 @Input 属性 时,才能使用 Angular ([]) 中的绑定语法。 router-outlets没有这个。另外,路由组件作为兄弟添加到 <router-outlet>,而不是子组件。

最简单的方法(也是 IMO 的最佳实践)是仅使用共享服务,该服务具有随后被注入子组件的数据。看起来你有一个 turnoverService,所以子组件需要在它们的构造函数中获取它。

更多信息:

EDIT:另一种方法是在路由定义本身上使用 resolve 方法。 resolve 函数将在路由被激活时触发,但路由本身不会真正加载,直到 resolve 函数成功完成。然后路由组件将可以通过 Injector 访问 resolve 数据。如果您已经拥有数据或需要执行一些逻辑来获取它,这将起作用,但如果 resolve 方法正在进行异步 AJAX 调用,则可能不是最佳解决方案。

有关 resolve 的更多信息,请参阅此出色的 article(此处缺少 Angular 文档本身)。