Angular 2 में 2025 में select से नया मान कैसे प्राप्त करें: सर्वोत्तम अभ्यास

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Angular 2+ में select से नया मान कैसे प्राप्त करें: शुरुआत से विशेषज्ञ तक

\n\n

क्या आपने कभी शाम को एक कप कॉफी के साथ बैठकर Angular पर कोड लिखा और अचानक महसूस किया: "अरे, मैं उस पल को कैसे पकड़ूं जब उपयोगकर्ता ने <select> में एक नया विकल्प चुना?"? यदि हाँ — तो आप अकेले नहीं हैं। Stack Overflow पर सवाल "How can I get new selection in 'select' in Angular 2?" ने दसियों हज़ार बार देखा गया है। और यह आश्चर्य की बात नहीं है: Angular में ऐसा करने के तीन तरीके हैं, और शुरुआती अक्सर भ्रमित हो जाते हैं कि कौन सा चुनें।

\n\n

इस लेख में, हम TypeScript पर सभी वर्तमान दृष्टिकोणों पर चर्चा करेंगे जो 2025 में Angular 2+ में काम करते हैं। आप सीखेंगे कि ngModel, रिएक्टिव फॉर्म और (change) हैंडलर का उपयोग कैसे करें, और स्पष्ट सिफारिशें प्राप्त करेंगे कि कब और क्या उपयोग करना है। चलिए शुरू करते हैं!

\n\n

समस्या: Angular में साधारण select सिर्फ HTML क्यों नहीं है?

\n\n

सामान्य HTML में, आप लिखेंगे:

\n\n
<select id="city" onchange="handleChange(event)">\n  <option value="msk">मॉस्को</option>\n  <option value="spb">सेंट पीटर्सबर्ग</option>\n</select>
\n\n

और फ़ंक्शन handleChange(event) इवेंट प्राप्त करता। Angular में, यह थोड़ा अधिक जटिल (लेकिन अधिक लचीला) है। आपको केवल "क्लिक पकड़ना" नहीं है, बल्कि डेटा को सही ढंग से बांधना, परिवर्तन को संभालना और प्रतिक्रियाशीलता खोने या अनावश्यक री-रेंडर जैसी सामान्य गलतियों से बचना है।

\n\n

आइए तीन मुख्य तरीकों पर नज़र डालें जिनका उपयोग आप 2025 में करेंगे।

\n\n

तरीका 1: क्लासिक (ngModel + (change)) — सरल और विश्वसनीय

\n\n

यह दृष्टिकोण सरल फॉर्म के लिए उपयुक्त है जहाँ आपको जटिल सत्यापन की आवश्यकता नहीं है। आप select को [(ngModel)] के माध्यम से एक वेरिएबल से बांधते हैं और (change) इवेंट को सुनते हैं।

\n\n

कोड उदाहरण

\n\n
// app.component.ts\nimport { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html'\n})\nexport class AppComponent {\n  selectedCity: string = '';\n  cities: string[] = ['मॉस्को', 'सेंट पीटर्सबर्ग', 'कज़ान'];\n\n  onCityChange(newCity: string): void {\n    console.log('चयनित शहर:', newCity);\n    // यहाँ API कॉल कर सकते हैं या UI के अन्य भाग बदल सकते हैं\n  }\n}
\n\n
<!-- app.component.html -->\n<select [(ngModel)]="selectedCity" (change)="onCityChange(selectedCity)">\n  <option value="" disabled>शहर चुनें</option>\n  <option *ngFor="let city of cities" [value]="city">{{ city }}</option>\n</select>
\n\n

महत्वपूर्ण! Angular 2+ में, (change) इवेंट मॉडल अपडेट होने के बाद ट्रिगर होता है। इसलिए onCityChange के अंदर selectedCity में पहले से ही नया मान होता है। यदि आपको पुराने मान की आवश्यकता है — तो इसे बदलने से पहले एक अलग वेरिएबल में सहेजें।

\n\n

तरीका 2: रिएक्टिव फॉर्म — शक्ति और नियंत्रण

\n\n

यदि आप सत्यापन, गतिशील फ़ील्ड या सब्सक्रिप्शन के साथ एक गंभीर एप्लिकेशन बना रहे हैं — तो रिएक्टिव फॉर्म का उपयोग करें। यह 2025 में उद्योग का मानक है।

\n\n

चरण 1: ReactiveFormsModule आयात करें

\n\n
// app.module.ts\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n  imports: [\n    ReactiveFormsModule\n  ]\n})\nexport class AppModule { }
\n\n

चरण 2: FormControl बनाएँ और परिवर्तनों की सदस्यता लें

\n\n
// app.component.ts\nimport { Component, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html'\n})\nexport class AppComponent implements OnInit {\n  cityControl = new FormControl('');\n  cities: string[] = ['मॉस्को', 'सेंट पीटर्सबर्ग', 'कज़ान'];\n\n  ngOnInit(): void {\n    // मान परिवर्तनों की सदस्यता लें\n    this.cityControl.valueChanges.subscribe((newCity: string) => {\n      console.log('रिएक्टिव फॉर्म से नया शहर:', newCity);\n    });\n  }\n}
\n\n
<!-- app.component.html -->\n<select [formControl]="cityControl">\n  <option value="" disabled>शहर चुनें</option>\n  <option *ngFor="let city of cities" [value]="city">{{ city }}</option>\n</select>
\n\n

टिप: सब्सक्रिप्शन को ngOnDestroy में अनसब्सक्राइब करना न भूलें, या मेमोरी लीक से बचने के लिए takeUntil ऑपरेटर का उपयोग करें।

\n\n

तरीका 3: (change) इवेंट का सीधा उपयोग — त्वरित और गंदा

\n\n

कभी-कभी आपको केवल इवेंट की आवश्यकता होती है, बिना मॉडल बाइंडिंग के। यह दृष्टिकोण सरल परिदृश्यों के लिए उपयुक्त है जहाँ आपको चयनित मान को ट्रैक करने की आवश्यकता नहीं है।

\n\n

कोड उदाहरण

\n\n
// app.component.ts\nimport { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html'\n})\nexport class AppComponent {\n  cities: string[] = ['मॉस्को', 'सेंट पीटर्सबर्ग', 'कज़ान'];\n\n  onSelectChange(event: Event): void {\n    const selectElement = event.target as HTMLSelectElement;\n    console.log('चयनित मान:', selectElement.value);\n  }\n}
\n\n
<!-- app.component.html -->\n<select (change)="onSelectChange($event)">\n  <option value="" disabled>शहर चुनें</option>\n  <option *ngFor="let city of cities" [value]="city">{{ city }}</option>\n</select>
\n\n

नोट: यह विधि Angular के डेटा बाइंडिंग का उपयोग नहीं करती है, इसलिए यह बड़े एप्लिकेशन के लिए कम उपयुक्त है जहाँ आपको स्थिति प्रबंधन की आवश्यकता है।

\n\n

निष्कर्ष: 2025 में क्या चुनें?

\n\n

यहाँ एक त्वरित सारांश है:

\n\n
    \n
  • सरल फॉर्म: ngModel + (change) का उपयोग करें — यह सरल और विश्वसनीय है।
  • \n
  • जटिल एप्लिकेशन: रिएक्टिव फॉर्म चुनें — वे अधिक नियंत्रण और स्केलेबिलिटी प्रदान करते हैं।
  • \n
  • त्वरित प्रोटोटाइप: सीधे (change) इवेंट का उपयोग करें, लेकिन याद रखें कि यह उत्पादन कोड के लिए सबसे अच्छा अभ्यास नहीं है।
  • \n
\n\n

अब आप जानते हैं कि Angular 2+ में select से मान कैसे प्राप्त करें। अपने प्रोजेक्ट के लिए सही तरीका चुनें और कोडिंग का आनंद लें!

ब्लॉग

पुस्तक अनुशंसाएँ