angular6中使用ReplaySubject传递数据遇到相互冲突的问题

本文探讨Angular6中使用ReplaySubject进行跨组件数据传递时遇到的问题,特别是缓存导致的数据污染现象。作者详细描述了如何通过在事件结束时发送空字符串参数来清空缓存,避免数据混淆。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在angular6中有多种跨组件传递数据的方法,这里说一下使用ReplaySubject遇到的坑

1.在服务中定义

 public current: any = new ReplaySubject<any>( 1 ); 


public dragcol:any = new ReplaySubject<any>( 1 )

2.接收参数

setdrag(data1:any,data2:any,data3:any,data4:any,data5:any,data6:any,data7:any){
        this.current.next(data1)
    }

setdragcol(data3:any,data4:any,data5:any,data6:any,data7:any,data8:any,data9:any){
        this.dragcol.next(data3)


    }

3.返回数据

getdrag(){
        return {a:this.current,b:this.dragstyle,c:this.dragsarray,d:this.loadDatasetId,e:this.loadDatadatasource,f:this.expressQuery}
}

getdragcol(){
        return {a:this.dragcol,b:this.dragcolstyle,c:this.dragcolarray,d:this.loadDatasetId,e:this.loadDatadatasource,f:this.expressQuery}
    }

4.使用服务,引入步骤略

在这里,定义了两个变量来传递数据current 和dragcol,调用的时候会在一个事件中同时调用getdrag() 和 getdragcol(),因为ReplaySubject本身有缓存的作用,所以这两个会相互影响,当触发getdrag() 的时候,getdragcol()曾经用过的数据又会被使用,angular6中并没有说这种方法怎么清除缓存,经过N次失败的尝试后,终于找到了一种方法,就是在事件结束的时候重新给传一遍空字符串的参数

 /*不能插入图片了*/

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值