将 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 文档本身)。
我正尝试在多个组件之间共享我的响应式表单,但在尝试通过路由实现时我 运行 遇到了问题。我收到的错误: '无法绑定到 '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 文档本身)。