البرمجة

تحسين استخدام ngModelChange في Angular 2 لتحقيق دقة أفضل في نقل البيانات

في Angular 2، عندما تقوم باستخدام ngModelChange للاستماع إلى التغييرات في عنصر select، يتم تمرير القيمة المحددة (في هذه الحالة workout.name) إلى الدالة onChange الخاصة بك. ومن أجل تحقيق هدفك في تمرير workout.id بدلاً من workout.name، يتعين عليك إجراء تغييرات في كودك.

لتحقيق هذا، يمكنك تعديل الكود الخاص بك كما يلي:

html
<select class="form-control" [ngModel]="selectedWorkout" (ngModelChange)="onChange($event)"> <option *ngFor="let workout of workouts" [ngValue]="workout.id">{{workout.name}}option> select>

تم إضافة [ngValue]="workout.id" في الخيارات، وهذا سيجعل Angular يتعامل مع workout.id بدلاً من workout.name كقيمة لكل خيار. وعند تحديد أي خيار، ستتم مرور workout.id إلى الدالة onChange الخاصة بك.

وبالتالي، يمكنك تعديل الكود في الكونترولر كما يلي:

typescript
onChange(value){ alert(value); // سيظهر workout.id بدلاً من workout.name }

بهذه الطريقة، ستحصل على النتيجة المرجوة حيث سيتم تمرير workout.id بدلاً من workout.name عند تغيير الخيار في القائمة المنسدلة.

المزيد من المعلومات

تعتبر عملية التعديل التي قمت بها في كود Angular 2 خطوة مهمة نحو تحقيق الهدف الذي تسعى إليه. ومن المهم فهم بعض الجوانب الإضافية التي قد تسهم في تحسين فهمك وتجربتك في تطوير التطبيقات باستخدام Angular 2.

أولاً، قمت باستخدام [ngValue] في العنصر option. هذا يعتبر أفضل ممارسة في Angular عند استخدام ngModel مع select. باستخدام [ngValue]، يمكنك تحديد قيمة الخيار بشكل صحيح بدلاً من استخدام ترميز النص التقليدي.

ثانيًا، يمكنك أيضًا النظر في استخدام الدوال الخاصة ب Angular مثل ngOnInit لتهيئة البيانات قبل عرضها في القالب. يمكنك استخدام ngOnInit لتحميل البيانات من المصادر الخارجية، مثل الخدمات (services)، وتخزينها في متغيرات المكون لتكون جاهزة للاستخدام.

على سبيل المثال، يمكنك إضافة كود إضافي لاسترجاع بيانات workouts من خدمة:

typescript
import { Component, OnInit } from '@angular/core'; import { WorkoutService } from './workout.service'; @Component({ selector: 'app-workout-selector', template: ` `, }) export class WorkoutSelectorComponent implements OnInit { workouts: any[] = []; selectedWorkout: string; constructor(private workoutService: WorkoutService) {} ngOnInit() { this.workouts = this.workoutService.getWorkouts(); } onChange(value) { alert(value); // سيظهر workout.id بدلاً من workout.name } }

هنا، يتم استخدام OnInit لاستدعاء getWorkouts من خدمة WorkoutService لجلب البيانات قبل عرضها في القالب.

هذه النقاط الإضافية قد تعزز من فهمك لكيفية بناء تطبيقات Angular 2 وتحسين تنظيم الشيفرة وصيانتها.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!