Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 当子组件在路由器出口中时,从子组件调用父组件函数_Angular_Angular7 - Fatal编程技术网

Angular 当子组件在路由器出口中时,从子组件调用父组件函数

Angular 当子组件在路由器出口中时,从子组件调用父组件函数,angular,angular7,Angular,Angular7,我需要在子组件中发生事件后,通过调用父组件中的函数来更新父组件中的一些数据。 这里,我的子组件位于父级的路由器出口中 parentComponent.html:- <div class="row"> Parent component </div> <router-outlet></router-outlet> } 现在,在子级中单击一个按钮,我需要通过从子级传递一个参数来调用函数fetchRequestsStatus(角色,用户)。我见

我需要在子组件中发生事件后,通过调用父组件中的函数来更新父组件中的一些数据。 这里,我的子组件位于父级的路由器出口中

parentComponent.html:-

<div class="row">
     Parent component
</div>
<router-outlet></router-outlet>
}

现在,在子级中单击一个按钮,我需要通过从子级传递一个参数来调用函数
fetchRequestsStatus(角色,用户)
。我见过用于共享数据的@input@output装饰器,但这里我的子组件在路由器内部


我该怎么做呢?

如果你想

这是无效的,因为您认为是子组件的子组件在运行时实际上是同级组件


我猜这是你的应用程序组件。因此,您可以在
app.service
中有一个主题,它可以是子组件的观察者,也可以是父组件的观察者。

最干净的解决方案是在父组件和子组件之间创建一个共享服务,该服务包含父组件和子组件使用的主题

有关代码示例,请参阅此答案:


确保使用“根”中提供的新的
角度功能,以确保服务仅实例化一次。(singleton)

看看这个,我已经创建了一个共享服务,但是如何才能得到一个可观察的函数结果?private messagesource=new BehaviorSubject();currentmessage=this.messagesource.asObservable();当前消息必须包括来自
rxjs
的httprequestUse
的结果。阅读iam使用真实备份应用程序,不返回假数据哈哈,在那里发布的答案不仅仅解决假数据。您正在尝试将HTTP响应从服务传递给父级吗?然后您的更改消息需要是这样的:
changeMessage(r,u){this.getStatusCount(r,u).subscribe(res=>this.messageSource.next(res));}
fetchRequestsStatus(role, user) {
if (this.userRole) {
  this.dashboardService.getStatusCount(role, user).subscribe(
    res => {
      console.log(res)
    },
    err => {
      console.log(err)
    })
}