亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用角度的可觀察值返回數字/變量?

如何使用角度的可觀察值返回數字/變量?

慕的地8271018 2021-11-04 10:42:39
我有一個角度服務調用 API 并返回大量數據。在同一個 GET 調用中,我正在做一些邏輯來計算每種類型的數量。我的問題很簡單,我可以將那個變量/數字和數據一起發回,或者甚至將它保存到另一個變量并發送它嗎?當我嘗試將它作為公共變量保存到服務中時,當我嘗試將它拉入另一個組件時它是未定義的。我假設是因為在訂閱 observable 之前訪問了變量,但我不知道如何解決這個問題?在下面的代碼中,_counts 是我要返回的內容,它可以在 getPciInfo 方法中很好地進行日志記錄,但就像我說的那樣,它在其他任何地方都以未定義的形式返回。(我正在嘗試將此數字傳遞給不同的組件)。感謝您提供的任何幫助或建議。public _counts: any;getPciInfo(): Observable <Ipcidata[]> {    return this.httpClient.get<Ipcidata[]>('http://dr0-hlp-07/api/PCIMachines')      .pipe(              map(results => {                const sorted = results.sort(( a, b ) => {                      const updateDateA = Date.parse(this.datepipe.transform(a.UpdatedDate, 'MM-dd-yyyy'));                      const carda = determineCardType(a, this.dateMinusMonth, this.dateMinusTwoWeeks)                      const cardb = determineCardType(b, this.dateMinusMonth, this.dateMinusTwoWeeks)                      return cardb - carda                });                this._counts = sorted.reduce((acc, cur)=>{                  const cardType = determineCardType(cur, this.dateMinusMonth, this.dateMinusTwoWeeks)                  switch (cardType) {                    case 1:                      acc.green += 1;                      break;                    case 2:                      acc.yellow += 1;                      break;                    case 3:                      acc.red += 1;                      break;                  }                  return acc;                }, {                  red: 0,                  green: 0,                  yellow: 0                });                console.log(this._counts)                console.log(this._counts.red)          return sorted;          }
查看完整描述

1 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

要發回計數,您可以執行以下操作:


return ({sorted, counts: _counts});

要在此服務的組件之間共享它,您可以擁有一個主題,例如:


private countsSource = new Subject();

private counts = this.countsSource.asObservable();


getPciInfo(): Observable <Ipcidata[]> {

    return this.httpClient.get<Ipcidata[]>('http://dr0-hlp-07/api/PCIMachines')

      .pipe(

              map(results => {

                 ....

                 const counts = ...

                 this.countsSource.next(counts)

              });

}


getCounts(): Observable<CountData> {

     return this.counts;

}

在一個組件中,你可以像其他函數一樣使用它


this.myService.getCounts().subscribe(counts => console.log(counts));

如果您希望將計數發送到新訂閱,您可能必須使用BehaviorSubject或ReplaySubject。


查看完整回答
反對 回復 2021-11-04
  • 1 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號