تحسين استخدام ngModelChange في Angular 2 لتحقيق دقة أفضل في نقل البيانات
في Angular 2، عندما تقوم باستخدام ngModelChange
للاستماع إلى التغييرات في عنصر select
، يتم تمرير القيمة المحددة (في هذه الحالة workout.name
) إلى الدالة onChange
الخاصة بك. ومن أجل تحقيق هدفك في تمرير workout.id
بدلاً من workout.name
، يتعين عليك إجراء تغييرات في كودك.
لتحقيق هذا، يمكنك تعديل الكود الخاص بك كما يلي:
-
ملخص سريع عن الـ SFP14/11/2023
-
نسخ عنوان البريد الإلكتروني إلى الحافظة01/04/2024
-
كيفية نقل القيم بين كائنين في VB.NET13/03/2024
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
الخاصة بك.
وبالتالي، يمكنك تعديل الكود في الكونترولر كما يلي:
typescriptonChange(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
من خدمة:
typescriptimport { 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 وتحسين تنظيم الشيفرة وصيانتها.