Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mendapatkan Nilai Semasa Subjek RxJS atau Boleh Diperhatikan dalam Sudut?

Bagaimana untuk Mendapatkan Nilai Semasa Subjek RxJS atau Boleh Diperhatikan dalam Sudut?

DDD
DDDasal
2024-11-03 01:52:29367semak imbas

How to Get the Current Value of an RxJS Subject or Observable in Angular?

Mendapatkan Nilai Semasa Subjek RxJS atau Boleh Diperhatikan

Dalam aplikasi Sudut, adalah perkara biasa untuk menggunakan subjek atau boleh diperhatikan untuk perkongsian data dan komunikasi. Walau bagaimanapun, tidak seperti pembolehubah, subjek dan pemerhatian tidak secara intrinsik memegang nilai semasa. Apabila mereka memancarkan nilai, nilai itu segera diserahkan kepada pelanggan dan yang boleh diperhatikan menyelesaikan tugasnya.

Senario:

Andaikan anda mempunyai subjek isLoggedIn dalam perkhidmatan Angular yang mewakili status log masuk pengguna. Anda mahu komponen lain mendapatkan semula status log masuk semasa tanpa melanggan isLoggedIn observable.

Penyelesaian:

Untuk menangani perkara ini, RxJS menawarkan BehaviorSubject, yang direka khusus untuk memberikan nilai semasa. Tidak seperti subjek dan boleh diperhatikan, BehaviorSubject mengingat nilai terakhir yang dipancarkan dan serta-merta memancarkannya kepada pemerhati yang baru dilanggan.

Pelaksanaan:

Untuk menggunakan BehaviorSubject, anda boleh mengubah suai anda Perkhidmatan SessionStorage sebagai berikut:

@Injectable()
export class SessionStorage extends Storage {
  private _isLoggedInSource = new BehaviorSubject<boolean>(false);  // Initialize with a default value
  isLoggedIn = this._isLoggedInSource.asObservable();
  constructor() {
    super('session');
  }
  setIsLoggedIn(value: boolean) {
    this.setItem('_isLoggedIn', value, () => {
      this._isLoggedInSource.next(value);
    });
  }
}

Dalam komponen anda, anda boleh mendapatkan semula status log masuk semasa menggunakan kaedah getValue() bagi BehaviorSubject:

import {SessionStorage} from 'app/services/session-storage.service';
...
const sessionStorage = new SessionStorage();

const isLoggedIn = sessionStorage.isLoggedInSource.getValue();

Dengan menggunakan BehaviorSubject, anda mempunyai mekanisme untuk dapatkan nilai semasa subjek isLoggedIn anda tanpa bergantung pada langganan, memberikan fleksibiliti yang lebih besar dalam reka bentuk aplikasi dan data anda pengendalian.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Semasa Subjek RxJS atau Boleh Diperhatikan dalam Sudut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn