في Angular 2 والإصدارات اللاحقة، يمكنك تحقيق وظيفة مشابهة باستخدام دورة حياة العنصر (lifecycle hooks) وخاصية last
المتاحة في قالب *ngFor
. لتحقيق هذا، يمكنك استخدام ngForOf
مع last
مع خاصية (ngForChange)
للتقاط التغييرات في الدورة.
أولاً وقبل كل شيء، قم بتحديد واستيراد ChangeDetectorRef
من @angular/core
في مكونك.
typescriptimport { ChangeDetectorRef } from '@angular/core';
ثم قم بإضافة ChangeDetectorRef
كمعلمة في constructor:
typescriptconstructor(private cdr: ChangeDetectorRef) { }
الآن، يمكنك استخدام هذا في قالب المكون الخاص بك:
typescriptngAfterViewInit() {
this.cdr.detectChanges();
}
والآن في قالب الكود الخاص بك:
html<ul>
<li *ngFor="let item of items; let last = last; let i = index"
(ngForChange)="onNgForChange(last, i)">
{{ item }}
li>
ul>
ثم في مكونك:
typescriptonNgForChange(isLast: boolean, index: number) {
if (isLast) {
// اتخاذ الإجراءات الخاصة بك عند اكتمال الدورة
this.callThisWhenNgForHasFinished();
}
}
هذا التغيير يسمح لك بتنفيذ السلوك الذي تريده عند اكتمال دورة ngFor
. يمكنك استدعاء الوظائف أو الطرق التي تريدها داخل callThisWhenNgForHasFinished()
.
قد تحتاج إلى تعديل هذا الكود بما يتناسب مع بنية ومتطلبات مشروعك الخاص، ولكن هذه الطريقة تعطيك فكرة عن كيفية تحقيق الوظائف المطلوبة باستخدام Angular 2 ومستجداتها.
المزيد من المعلومات
بالتأكيد، دعنا نستكمل بعض التفاصيل حول الكود المقدم وكيفية تحقيق وظيفة مشابهة باستخدام Angular 2.
أولاً وقبل كل شيء، يُفضل أن تقوم بتعريف المصفوفة items
في مكونك. يمكنك القيام بذلك على سبيل المثال في الجزء العلوي من المكون:
typescriptimport { 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
):
typescriptimport { 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 ويسمح لك بتنفيذ أي إجراءات تريدها بمجرد اكتمال الدورة.