与功能请求相关的@angular/*包?
核心,路由
描述
父组件很难访问其子组件的参数和查询参数。这可以很好地概括为 here 。
对我来说,为什么 activatedRoute.parent
、 activatedRoute.children
和 activateRoute.firstChild
不是可观察的,这是令人困惑的。
无论如何,如果有类似 paramsInheritanceStrategy
的东西,让父组件访问子组件,那将是很好的。
使用 collectRouteParams 不是一个好解决方案,因为它是基于 snapshot
构建的,如果子组件发生变化或多个子组件发生变化,它将无法工作。
建议的解决方案
目前,最好的解决方案是使用类似于以下内容的方法,但这种方法对于需要频繁使用的功能并不理想:
const firstChildParams$ = this.router.events.pipe(filter(e => e instanceof NavigationEnd),
startWith(undefined),
switchMap(e => this.route.firstChild!.paramMap));
此外,这种方法对子组件和父组件都不起作用——您需要对其进行修改。
考虑过的替代方案
一切
7条答案
按热度按时间kognpnkq1#
你好@decoursin 👋
activatedRoute.parent
,activatedRoute.children
和activateRoute.firstChild
可以是 null 或者ActivatedRoute
对象,从我的Angular 来看,我认为这是合乎逻辑的。要通过可观察对象访问子路由数据,你可以使用
activateRoute.firstChild?.params
。😃我认为你可以避免使用
Router
服务。那么 this example 呢?
h4cxqtbf2#
你好,@sdedieu,你的建议在孩子或
firstChild
发生变化时不起作用。看起来你没有完全理解问题。我建议你也查看这个Stack Overflow评论:https://stackoverflow.com/a/54740466/1938094Angular被设计成这样,子组件(和父组件)可以在不销毁组件的情况下动态更改。然而,观察子组件(或父组件)何时发生变化是不可能的(或者非常困难),这是一个问题,尤其是当想要访问只有子组件才能访问的参数时。
wf82jlnq3#
这个功能请求现在已经成为我们的待办事项候选!在接下来的阶段,社区有60天的时间进行投票。如果请求获得超过20票的赞成,我们将把它移到我们的考虑列表中。
你可以在我们的文档中找到更多关于功能请求流程的详细信息。
hivapdat4#
@angular-robot - 太棒了,非常感谢!
wz1wpwve5#
请注意,我们已经开始了针对您的功能请求的社区投票过程。距离投票过程结束还有20天。
有关Angular功能请求流程的更多详细信息,请参阅我们的文档。
uxhixvfz6#
感谢您提交您的功能请求!看起来在投票过程中,它没有收集到足够的票数进入下一阶段。
我们希望保持Angular丰富且符合人体工程学,同时关注其范围和学习过程。如果您认为您的请求可能超出了Angular的范围,我们鼓励您与community合作,将其发布为开源项目package。
您可以在我们的文档中找到有关功能请求过程的更多详细信息。
ddrv8njm7#
在此处至少应该有一个类似于
activatedRoute.snapshot.allParams()
的函数,该函数包含所有子参数。