天天看點

angular6中使用ReplaySubject傳遞資料遇到互相沖突的問題

在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次失敗的嘗試後,終于找到了一種方法,就是在事件結束的時候重新給傳一遍空字元串的參數

angular6中使用ReplaySubject傳遞資料遇到互相沖突的問題
angular6中使用ReplaySubject傳遞資料遇到互相沖突的問題

繼續閱讀