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

एंगुलर 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 पर फॉलो करें!