فهرست سرفصل‌های 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 — ناوبری امن از نال (?.) (Null-Safe Navigation (?.))

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

ناوبری امن از نال (?.) (Null-Safe Navigation (?.))

اینجا «ناوبری امن از نال (Null-Safe Navigation)» را می شناسی. با عملگر ?. مقدارهای اختیاری را بی خطا می خوانیم. همچنین با ?? مقدار پیش فرض می دهیم.

ناوبری امن از نال (?.) چیست؟

?. یعنی اگر هر بخش مسیر تهی بود، خطا نده و نتیجه را نامشخص بگیر. بنابراین مسیرهای عمیق ایمن می شوند و صفحه نمی پَرَد.

کِی از ?. استفاده کنیم؟

وقتی داده اختیاری است یا دیر می رسد. همچنین بهتر از شرط های طولانی است. با ?? هم جای خالی را پر کن.

نمونه اجرایی

کاربر را روشن و خاموش می کنیم. سپس ایمیل را ایمن می خوانیم.

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

@Component({
  selector: 'app-root',
  standalone: true,
  template: `
    <button (click)=\"toggle()\">Toggle user</button>
    <p>Email: {{ user?.profile?.email ?? '(none)' }}</p>
  `
})
export class App {
  user: { profile?: { email?: string } } | undefined = undefined;

  toggle(): void {
    if (this.user) {
      this.user = undefined;
    } else {
      this.user = { profile: { email: 'a@example.com' } };
    }
  }
}

bootstrapApplication(App);

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

نکته: برای رشته خالی یا عدد صفر، از ?? استفاده کن. چون || آن ها را هم خالی فرض می کند.

گام های عملی

  1. مسیر عمیق را با ?. ایمن کن.
  2. برای پیش فرض از ?? کمک بگیر.
  3. کد سنگین را در قالب نگذار؛ داخل کلاس ببر.
  4. با دکمه، وضعیت را عوض کن و نتیجه را ببین.

پیوندها

راهنمای کامل در متغیرهای ارجاعی و ادامه مبحث در ریز نویسی دستوری. همچنین نمونه زنده W3Schools را ببین.

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

جمع بندی سریع

  • ?. خطاهای تهی را مهار می کند.
  • ?? مقدار پیش فرض می گذارد.
  • مسیرهای عمیق ایمن تر می شوند.
  • کد تمیزتر و کوتاه تر می شود.