angular - 当子组件在路由器出口Angular中时,从子组件调用父组件函数
问题描述
在子组件中发生事件后,我需要通过调用其中的函数来更新父组件中的一些数据。这里我的子组件在父组件的路由器出口中
parentComponent.html:-
<div class="row">
Parent component
</div>
<router-outlet></router-outlet>
Parentcomponent.ts:-
fetchRequestsStatus(role, user) {
if (this.userRole) {
this.dashboardService.getStatusCount(role, user).subscribe(
res => {
console.log(res)
},
err => {
console.log(err)
})
}
}
现在点击孩子的按钮,我需要fetchRequestsStatus(role, user)
通过传递来自孩子的参数来调用函数。我已经看到 @input @ output 装饰器用于共享数据,但这里我的子组件位于路由器内部。
我该如何进行呢?
解决方案
最干净的解决方案是在父子组件之间创建一个共享服务,该服务包含父子组件使用的主题。
请参阅此答案以获取代码示例: https ://stackoverflow.com/a/41989983/5620535
确保使用新的providedIn: 'root'
角度特性来确保服务只实例化一次。(单件)
推荐阅读
- node.js - MongoDB 用户身份验证在 Node.js 脚本中失败
- compiler-errors - Deviant Rust:如何禁用所有可能的警告和检查?
- c# -
标签在自定义实现中未被识别 - reactjs - 为什么这个使用 useContext useEffect 和 setInterval 的自定义 React 钩子在测试中失败
- r - Fisher 检验返回 1
- arrays - 如何为 Swift 数组中的元素生成数字?
- php - 在 PHP 中循环 li
- php - 闭包的序列化
- reactjs - 在 React 中,如何使用多个状态属性设置 img src?
- sql - 在 SQL 中聚合真/假序列