詳細ガイド
テンプレート構文

ローカルテンプレート変数

Angularの @let 構文を使用すると、ローカル変数を定義してテンプレート全体で再利用できます。

IMPORTANT: @let 構文は現在 開発者プレビュー です。

構文

@let 宣言は JavaScript の let に似ており、 その値は有効なAngular式であれば何でもかまいません。 式はテンプレートが実行されるたびに再評価されます。

      
@let name = user.name;
@let greeting = 'Hello, ' + name;
@let data = data$ | async;
@let pi = 3.1459;
@let coordinates = {x: 50, y: 100};
@let longExpression = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit ' +
'sed do eiusmod tempor incididunt ut labore et dolore magna ' +
'Ut enim ad minim veniam...';

@let の値を参照する

@let を宣言したら、テンプレートのどこでも再利用できます。

      
@let user = user$ | async;
@if (user) {
<h1>Hello, {{user.name}}</h1>
<user-avatar [photo]="user.photo"/>
<ul>
@for (snack of user.favoriteSnacks; track snack.id) {
<li>{{snack.name}}</li>
}
</ul>
<button (click)="update(user)">プロファイルの更新</button>
}

代入可能性

@let とJavaScriptの let の主な違いは、@let はテンプレート内で再代入できないことです。 ただし、Angularが変更検知を実行するときに値が再計算されます。

      
@let value = 1;
<!-- 無効 -->
<button (click)="value = value + 1">値を増やす</button>

スコープ

@let 宣言は、現在のビューとその子孫にスコープされます。 ホイストされないため、親ビューや兄弟ビューからアクセスできません。

      
@let topLevel = value;
<div>
@let insideDiv = value;
</div>
{{topLevel}} <!-- 有効 -->
{{insideDiv}} <!-- 有効 -->
@if (condition) {
{{topLevel + insideDiv}} <!-- 有効 -->
@let nested = value;
@if (condition) {
{{topLevel + insideDiv + nested}} <!-- 有効 -->
}
}
<div *ngIf="condition">
{{topLevel + insideDiv}} <!-- 有効 -->
@let nestedNgIf = value;
<div *ngIf="condition">
{{topLevel + insideDiv + nestedNgIf}} <!-- 有効 -->
</div>
</div>
{{nested}} <!-- エラー、@if からホイストされていない -->
{{nestedNgIf}} <!-- エラー、*ngIf からホイストされていない -->

構文の定義

@let 構文は正式には次のように定義されています。

  • @let キーワード。
  • それに続く1つ以上の空白 (改行は含まない)。
  • それに続く有効なJavaScript名と0個以上の空白。
  • それに続く = 記号と0個以上の空白。
  • それに続くAngular式 (複数行にすることも可能)。
  • それに続く ; 記号。