发表于: 2021-07-04 23:28:19

0 1849


今天完成的事情:看了angular 的部署;之前没看懂的angular 组件之间的传值(父组件获取子组件的值;子组件获取父组件的值;还有没有关系的组件通过服务来进行数值的获取切换。)本来说搞微信小程序的,延期了


明天计划的事情:部署angular;写微信小程序了解


收获:  

使用事件通讯(EventEmitter, @output):
可以在父子组件之间通讯,一般用在子组件传递消息给父组件

  • 子组件创建事件 EventEmitter 对象,使用@output公开出去;
  • 父组件监听子组件@output出来的方法,然后处理事件;

非父子组件参数传递与通讯

通过路由参数
一个组件可以通过路由的方式跳转到另一个组件,如:列表与编辑:

  • A组件通过routerLink 或者 router.navigate 或者 router.navigateByUrl 进行页面跳转到B组件
  • B 组件接收这些参数

此方法是适用于参数传递,组件间的参数一旦接收就不会变化


使用service 进行通讯,即:两个组件同时注入某个服务

需要通讯的两个组件不是父子组件也不是兄弟组件,当然可以是任意关系的组件:

  • 新建一个服务,组件A和组件B同时注入该服务
  • 组件A从服务获取数据,或通过服务传递数据
  • 组件B从服务获取数据,或通过服务传递数据


消息服务模块

场景:这里涉及到一个项目,里面需要实现的是所有的组件都能进行通讯,或者是一个组件与多个组件进行通讯,且不能通过路由进行传参:

  • 使用RxJs,定义一个服务模块MessageService,所有的组件都能注册该服务
  • 需要传递数据的组件,调用该服务对应的方法
  • 需要接受数据的组件,调用该服务接收数据的方法,获得一个subscription对象,然后监听信息
  • 每一个使用该服务的组件,在Destroy的时候,需要this.subscription.unsubscribe()

   


返回列表 返回列表
评论

    分享到