angularjs父子通信,angular 父组件调用子组件的方法
非父子组件如何用Angular进行通信?本文介绍了Angular的非亲子组件通过服务进行通信的方法,希望对你有所帮助!
其实我们所熟悉的是指父子组件之间的值传递,这在业务实现的过程中是很常见的。
但是我参与的是跨级实现(也就是在非父子组件之间传递值)。是的,我可以将它们一层一层地向上传递,并在父组件中获取子组件的值。有没有更好的办法?【相关教程推荐:《angular教程》】
需求背景:
有一个子组件,可以理解为三级组件。在这个组件中,有一个下拉框。当您单击某个li页签时,需要将相应的选定值发送到第一级组件。同时,第一级组件用接收到的值请求列表接口,然后刷新数据。
最初思路:
当时我在想通过localstorage保存用户选择的值。在使用的组件中,我通过localstorage取出值,并用该值请求接口;但是,不可能是实时的。用户选中后,并不触发我获取父组件中的数据,即子组件中的值发生变化。如何通知父组件?
技术点:
Angular父组件和子组件通过服务来通讯
父组件及其子组件共享同一个服务,用于实现组件族内部的双向通信。
该服务实例的范围仅限于父组件及其子组件。该组件子树之外的组件将无法访问服务或与之通信。
原理
父组件及其子组件共享同一个服务,使用该服务在组件家族内部实现双向通信。
该服务实例的范围仅限于父组件及其子组件。该组件子树之外的组件将无法访问服务或与之通信。
它是子组件和父组件之间的桥梁,因为服务可以很容易地注入到其他组件中,又因为Subject对象可以将数据组播(传输)给订阅了这个对象的组件,所以将Angular中的服务和Rxjs中的Subject结合起来,就可以很容易地实现组件之间的数据通信。
实现:
使用以下代码在该子组件中创建一个服务文件:
从“@angular/core”导入{ injective };
从“rxjs”导入{ Subject };
@可注射({
providedIn:“根”
})
导出类HeaderActionService {
public pageTenantMode=new subject string();
//获取一个可观察的;
mission confirmed $=this . pagetenantmode . asobservable();
构造函数(){}
setParams(params) {
this . pagetenantmode . next(params);
}
}子组件数据层调用上述方法,并将值传入。
this . tenant mode service . set params()被注入到父组件调用的上述服务中,代码如下:
headermoservice . mission confirmed $。订阅(
()={
this . mode=headermodeservice . pagetenantmode;
this . inittabledata();
}
);有关编程的更多信息,请访问:编程入门!以上是Angular中非父子组件之间如何通信的详细内容。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。