البرمجة

تحقيق وظيفة مشابهة لـ ng-repeat في Angular 2: استخدام ngFor بفعالية

في Angular 2 والإصدارات اللاحقة، يمكنك تحقيق وظيفة مشابهة باستخدام دورة حياة العنصر (lifecycle hooks) وخاصية last المتاحة في قالب *ngFor. لتحقيق هذا، يمكنك استخدام ngForOf مع last مع خاصية (ngForChange) للتقاط التغييرات في الدورة.

أولاً وقبل كل شيء، قم بتحديد واستيراد ChangeDetectorRef من @angular/core في مكونك.

typescript
import { ChangeDetectorRef } from '@angular/core';

ثم قم بإضافة ChangeDetectorRef كمعلمة في constructor:

typescript
constructor(private cdr: ChangeDetectorRef) { }

الآن، يمكنك استخدام هذا في قالب المكون الخاص بك:

typescript
ngAfterViewInit() { this.cdr.detectChanges(); }

والآن في قالب الكود الخاص بك:

html
<ul> <li *ngFor="let item of items; let last = last; let i = index" (ngForChange)="onNgForChange(last, i)"> {{ item }} li> ul>

ثم في مكونك:

typescript
onNgForChange(isLast: boolean, index: number) { if (isLast) { // اتخاذ الإجراءات الخاصة بك عند اكتمال الدورة this.callThisWhenNgForHasFinished(); } }

هذا التغيير يسمح لك بتنفيذ السلوك الذي تريده عند اكتمال دورة ngFor. يمكنك استدعاء الوظائف أو الطرق التي تريدها داخل callThisWhenNgForHasFinished().

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

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

بالتأكيد، دعنا نستكمل بعض التفاصيل حول الكود المقدم وكيفية تحقيق وظيفة مشابهة باستخدام Angular 2.

أولاً وقبل كل شيء، يُفضل أن تقوم بتعريف المصفوفة items في مكونك. يمكنك القيام بذلك على سبيل المثال في الجزء العلوي من المكون:

typescript
import { Component } from '@angular/core'; @Component({ selector: 'app-your-component', templateUrl: './your-component.component.html', styleUrls: ['./your-component.component.css'] }) export class YourComponent { items: any[] = ['Item 1', 'Item 2', 'Item 3']; // استبدل هذا بمصفوفتك الفعلية }

ثم في template (your-component.component.html):

html
<ul> <li *ngFor="let item of items; let last = last; let i = index" (ngForChange)="onNgForChange(last, i)"> {{ item }} li> ul>

وفي المكون (your-component.component.ts):

typescript
import { Component, ChangeDetectorRef } from '@angular/core'; @Component({ selector: 'app-your-component', templateUrl: './your-component.component.html', styleUrls: ['./your-component.component.css'] }) export class YourComponent { items: any[] = ['Item 1', 'Item 2', 'Item 3']; constructor(private cdr: ChangeDetectorRef) { } ngAfterViewInit() { this.cdr.detectChanges(); } onNgForChange(isLast: boolean, index: number) { if (isLast) { // اتخاذ الإجراءات الخاصة بك عند اكتمال الدورة this.callThisWhenNgForHasFinished(); } } callThisWhenNgForHasFinished() { // قم بتنفيذ الإجراءات التي تريدها عند اكتمال الدورة console.log('ngFor has finished iterating.'); } }

يرجى استبدال المصفوفة items بالبيانات الفعلية التي تستخدمها في تطبيق Angular الخاص بك.

هذا الكود يوفر طريقة فعّالة للتعامل مع دورة ngFor في Angular 2 ويسمح لك بتنفيذ أي إجراءات تريدها بمجرد اكتمال الدورة.

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

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

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر