कोणीय में वेधशालाओं में संकेतों को परिवर्तित करना: आपको क्या जानने की आवश्यकता है

May 01 2023
Angular v16 नए पैकेज rxjs-interop को पेश करता है, जो एक आसान फंक्शन के साथ आता है जिसे toObservable कहा जाता है जो डेवलपर्स को सिग्नल को ऑब्जर्वेबल में बदलने की अनुमति देता है। इस लेख में, हम इस नई सुविधा का पता लगाएंगे और इसका उपयोग कैसे किया जा सकता है।

एंगुलर v16 नए पैकेज का परिचय देता है rxjs-interop, जो एक उपयोगी फ़ंक्शन के साथ आता है toObservableजिसे डेवलपर्स को a signalमें बदलने की अनुमति मिलती है observable। इस लेख में, हम इस नई सुविधा का पता लगाएंगे और इसका उपयोग कैसे किया जा सकता है।

सबसे पहले, हमें मॉड्यूल toObservableसे फ़ंक्शन आयात करने की आवश्यकता है। @angular/core/rxjs-interopयहां एक उदाहरण कोड स्निपेट दिया गया है जो इसके उपयोग को प्रदर्शित करता है:

import { toObservable } from '@angular/core/rxjs-interop';
import { signal } from '@angular/core';

@Component({
  standalone: true,
  template: `
    <input (input)="value.set(input.value)" #input />
  `,
})
export class FooComponent {
  value = signal('');
  value$ = toObservable(this.value);

  ngOnInit() {
    this.value$.subscribe(console.log);
  }
}

हुड के तहत, toObservableफ़ंक्शन a बनाता है ReplaySubjectऔर प्रदान किए गए को signalएक में लपेटता है effect। जब signalमूल्य बदलता है, तो effectनया मान उत्सर्जित करेगा।

सिग्नल का उपयोग करने का एक लाभ यह है कि हमें ऑपरेटर को जोड़ने की आवश्यकता नहीं है distinctUntilChanged, क्योंकि कार्य पहले से ही signalस्तर पर किया जा चुका है। इसके अतिरिक्त, यदि signalकोई त्रुटि होती है, तो इसे ग्राहक को एक त्रुटि सूचना के रूप में पारित किया जाएगा।

मूल्यों को उत्सर्जित करने के लिए प्रभाव () का उपयोग करने का एक दिलचस्प प्रभाव यह है कि मूल्य अतुल्यकालिक रूप से वितरित किया जाएगा । इसका मतलब यह है कि भले ही हम एक ही "टिक" पर कई मान उत्सर्जित करते हैं, हम केवल अंतिम सिग्नल मान प्राप्त करेंगे।

यह नोट करना महत्वपूर्ण है कि जब toObservableफ़ंक्शन को कॉल किया जाता है, तो यह सुनिश्चित करने के लिए जांच करता है कि इसे इंजेक्शन संदर्भ में कॉल किया जा रहा है । यदि नहीं, तो एक त्रुटि फेंक दी जाएगी। इसका मतलब यह है कि हम toObservableफ़ंक्शन का उपयोग केवल तभी कर सकते हैं जब inject()फ़ंक्शन उपलब्ध हो, सिवाय उन मामलों के जब हम injectorस्पष्ट रूप से पास करते हैं।

@Component({
  standalone: true,
  template: `
    <input (input)="value.set(input.value)" #input />
  `,
})
export class FooComponent {
  value = signal('');
  private injector = inject(Injector);
 
  ngOnInit() {
    const value$ = toObservable(this.value, {
      injector: this.injector
    }).subscribe(console.log);
  }
}

Angular और JS के बारे में अधिक पढ़ने के लिए मुझे मीडियम या Twitter पर फॉलो करें!