पाठ 8 / 30
@if, @for और @switch
आधुनिक बिल्ट-इन कंट्रोल-फ्लो सिंटैक्स।
@if / @else
Angular 17 से, @if और @else टेम्पलेट कंपाइलर में पहले से बने हैं — किसी डायरेक्टिव को import करने की ज़रूरत नहीं।
@if (isLoggedIn) {
<p>Welcome back!</p>
} @else {
<p>Please log in.</p>
}track के साथ @for
@for को एक track एक्सप्रेशन चाहिए ताकि लिस्ट बदलने पर Angular DOM को कुशलता से अपडेट कर सके।
@for (item of cartItems; track item.id) {
<li>{{ item.name }}</li>
} @empty {
<li>Your cart is empty.</li>
}@switch
@switch कई @case ब्लॉक में से एक चुनता है, साथ में वैकल्पिक @default।
@switch (status) {
@case ('loading') { <p>Loading…</p> }
@case ('error') { <p>Something went wrong.</p> }
@default { <p>Ready.</p> }
}पुराना सिंटैक्स जो अब भी दिखेगा
पुराने कोड में *ngIf और *ngFor जैसे स्ट्रक्चरल डायरेक्टिव उपयोग होते थे। ये अब भी काम करते हैं, पर नए कोड के लिए @if/@for की सिफ़ारिश की जाती है — कोई import नहीं, और बेहतर प्रदर्शन।
त्वरित जाँच: `@for` किस चीज़ की माँग करता है जो `*ngFor` सख़्ती से ज़रूरी नहीं बनाता था?
- एक `track` एक्सप्रेशन
- एक `@empty` ब्लॉक
- Signal में लिपटा हुआ array
Answer
एक `track` एक्सप्रेशन — `@for` में `track` अनिवार्य है और यह Angular को दोबारा-रेंडर होने पर आइटम को कुशलता से पहचानने में मदद करता है।