فهرست سرفصل‌های Angular
خانه (Home) معرفی (Intro) شروع سریع (Get Started) اولین اپ (First App) قالب ها (Templates) جای گذاری (Interpolation) متغیرهای ارجاعی (Reference Variables) ناوبری امن از نال (?.) (Null-Safe Navigation (?.)) دستورهای ساختاری (Structural Directives) ngTemplateOutlet (ngTemplateOutlet) عبارات و $event (Statements and $event) نام مستعار (Alias) پایپ ها (|) (Pipes (|)) بایندینگ ویژگی (Attribute Binding) TrackBy (TrackBy) کامپوننت ها (Components) دیتا بایندینگ (Data Binding) دایرکتیوها (Directives) رویدادها (Events) رندر شرطی (Conditional) لیست ها (Lists) فرم ها (Forms) روتر (Router) سرویس ها و تزریق وابستگی (Services & DI) کلاینت HTTP (HTTP Client) پایپ ها (Pipes) قلاب های چرخه حیات (Lifecycle Hooks) استایل دهی (Styling) راه اندازی برنامه (App Bootstrap) کنترل جریان (Control Flow) سیگنال ها (Signals) تشخیص تغییر (Change Detection) کامپوننت های پویا (Dynamic Comp) تزریق وابستگی پیشرفته (Advanced DI) روتر پیشرفته (Router Advanced) اینترسپتورهای HTTP (HTTP Interceptors) فرم های پیشرفته (Forms Advanced) مدیریت وضعیت (State Management) انیمیشن ها (Animations) تست (Testing) امنیت (Security) SSR و هیدریشن (SSR & Hydration) کامپایلر (Compiler) تمرین ها (Exercises) آزمون (Quiz) سرور (Server)
نتیجه‌ای برای جستجو یافت نشد.
Angular

Angular — دستورهای ساختاری (Structural Directives)

آخرین بروزرسانی: 1404/08/21

دستورهای ساختاری (Structural Directives)

اینجا میان بُر میکروسینتکس را می شناسی. با ستاره *، انگولار کد را به <ng-template> بسط می دهد. بنابراین کد کوتاه می شود و خوانایی بهتر می شود.

میکروسینتکس چیست؟

میکروسینتکس یعنی نوشتن دستور ساختاری با *. سپس انگولار آن را به یک <ng-template> کامل تبدیل می کند. همچنین متغیرهای زمینه مثل index as i می دهد.

چه زمانی استفاده کنیم؟

وقتی می خواهی براساس وضعیت، DOM را اضافه یا حذف کنی. یا وقتی می خواهی روی لیست ها با *ngFor سریع حلقه بزنی. اگر نیاز شد، نسخه صریح <ng-template> را بنویس.

نمونه کوتاه از میکروسینتکس

<div *ngIf=\"ok; else other\">OK</div>
<ng-template #other>Not OK</ng-template>
<li *ngFor=\"let item of items; index as i\">{{ i }} {{ item }}</li>

مشاهده در ادیتور

نکته: در انگولار 17+، نحو کنترل جریان جدید مثل @if و @for پیشنهاد می شود. اما این نحو همچنان پشتیبانی می شود.

نمونه کامل با کامپوننت

با دکمه وضعیت را عوض کن. سپس *ngIf و *ngFor نتیجه را نشان می دهند.

import { bootstrapApplication } from '@angular/platform-browser';
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [CommonModule],
  template: `
    <button (click)=\"ok = !ok\">Toggle</button>
    <div *ngIf=\"ok; else other\">OK</div>
    <ng-template #other>Not OK</ng-template>
    <ul>
      <li *ngFor=\"let item of items; index as i\">{{ i }} - {{ item }}</li>
    </ul>
  `
})
export class App {
  ok: boolean = true;
  items: string[] = ['A', 'B', 'C'];
}

bootstrapApplication(App);

مشاهده در ادیتور

گام های عملی

  1. برای شرط ها از *ngIf استفاده کن.
  2. برای لیست ها از *ngFor کمک بگیر.
  3. با index as i شماره خانه را بگیر.
  4. در نیازهای خاص، <ng-template> را صریح بنویس.

پیوندها

برای ادامه موضوع به ngTemplateOutlet برو. همچنین درباره ناوبری امن از نال بخوان. اگر می خواهی بیشتر درباره دستورهای ساختاری ببینی، همین صفحه مرجع است.

منبع W3Schools · اجرای زنده نمونه

جمع بندی سریع

  • * به <ng-template> بسط می شود.
  • *ngIf برای نمایش شرطی است.
  • *ngFor برای پیمایش لیست هاست.
  • متغیرهای زمینه مانند index as i مفیدند.