angular Parent component accessing child components parameters

zpgglvta  于 4个月前  发布在  Angular
关注(0)|答案(7)|浏览(67)

与功能请求相关的@angular/*包?

核心,路由

描述

父组件很难访问其子组件的参数和查询参数。这可以很好地概括为 here
对我来说,为什么 activatedRoute.parentactivatedRoute.childrenactivateRoute.firstChild 不是可观察的,这是令人困惑的。
无论如何,如果有类似 paramsInheritanceStrategy 的东西,让父组件访问子组件,那将是很好的。
使用 collectRouteParams 不是一个好解决方案,因为它是基于 snapshot 构建的,如果子组件发生变化或多个子组件发生变化,它将无法工作。

建议的解决方案

目前,最好的解决方案是使用类似于以下内容的方法,但这种方法对于需要频繁使用的功能并不理想:

const firstChildParams$ = this.router.events.pipe(filter(e => e instanceof NavigationEnd),
                                                  startWith(undefined),
                                                  switchMap(e => this.route.firstChild!.paramMap));

此外,这种方法对子组件和父组件都不起作用——您需要对其进行修改。

考虑过的替代方案

一切

kognpnkq

kognpnkq1#

你好@decoursin 👋
activatedRoute.parent , activatedRoute.childrenactivateRoute.firstChild 可以是 null 或者 ActivatedRoute 对象,从我的Angular 来看,我认为这是合乎逻辑的。
要通过可观察对象访问子路由数据,你可以使用 activateRoute.firstChild?.params 。😃
我认为你可以避免使用 Router 服务。
那么 this example 呢?

h4cxqtbf

h4cxqtbf2#

你好,@sdedieu,你的建议在孩子或firstChild发生变化时不起作用。看起来你没有完全理解问题。我建议你也查看这个Stack Overflow评论:https://stackoverflow.com/a/54740466/1938094
Angular被设计成这样,子组件(和父组件)可以在不销毁组件的情况下动态更改。然而,观察子组件(或父组件)何时发生变化是不可能的(或者非常困难),这是一个问题,尤其是当想要访问只有子组件才能访问的参数时。

wf82jlnq

wf82jlnq3#

这个功能请求现在已经成为我们的待办事项候选!在接下来的阶段,社区有60天的时间进行投票。如果请求获得超过20票的赞成,我们将把它移到我们的考虑列表中。
你可以在我们的文档中找到更多关于功能请求流程的详细信息。

hivapdat

hivapdat4#

@angular-robot - 太棒了,非常感谢!

wz1wpwve

wz1wpwve5#

请注意,我们已经开始了针对您的功能请求的社区投票过程。距离投票过程结束还有20天。
有关Angular功能请求流程的更多详细信息,请参阅我们的文档。

uxhixvfz

uxhixvfz6#

感谢您提交您的功能请求!看起来在投票过程中,它没有收集到足够的票数进入下一阶段。
我们希望保持Angular丰富且符合人体工程学,同时关注其范围和学习过程。如果您认为您的请求可能超出了Angular的范围,我们鼓励您与community合作,将其发布为开源项目package
您可以在我们的文档中找到有关功能请求过程的更多详细信息。

ddrv8njm

ddrv8njm7#

在此处至少应该有一个类似于activatedRoute.snapshot.allParams()的函数,该函数包含所有子参数。

相关问题