Template Syntax Angular — Angular

Angular menggunakan template syntax khusus untuk menghubungkan data ke view. Interpolation {{}} {{ title }} 2 + 3 = {{ 2 + 3 }} Property Binding [] Submit…

Template syntax adalah cara template membaca data dari class komponennya. Ada tiga bentuk dasar: {{ }} untuk teks, [ ] untuk property elemen, dan [attr. ] untuk atribut HTML. Bayangin papan menu Martabak Bang Jali yang angkanya pakai magnet. Tulisan "Rp" dan nama menunya dicat permanen, sedangkan angka harganya ditempel dan bisa diganti kapan saja. Template itu papannya, {{ harga }} itu slot magnetnya, dan class komponen itu Bang Jali yang menempel angka barunya. Begitu angkanya diganti di class, papannya ikut berubah.

🧪 Tebakan cepat: Di class, harga = 50000. Apa yang tampil dari <p>{{ harga * 2 }}</p>? Dan dari <p>harga * 2</p>, yang tanpa kurung kurawal? Jawabannya ada di bagian "Interpolasi: {{ }}".

Interpolasi: {{ }}

import { Component } from '@angular/core'

@Component({
  selector: 'app-root',
  standalone: true,
  template: `
    <h1>{{ judul }}</h1>
    <p>{{ menu }}: Rp{{ harga }}</p>
    <p>Dua porsi: Rp{{ harga * 2 }}</p>
    <p>harga * 2</p>
  `,
})
export class App {
  judul = 'Martabak Bang Jali'
  menu = 'Martabak Telur Spesial'
  harga = 50000
}

Yang tampil di halaman:

Martabak Bang Jali
Martabak Telur Spesial: Rp50000
Dua porsi: Rp100000
harga * 2

Ekspresi di template punya batas. Compiler Angular menolak ini, dan satu error di template membuat seluruh komponen gagal tampil:

Ditulis Pesan dari compiler (Angular 18)
{{ harga = 0 }} Parser Error: Bindings cannot contain assignments
{{ new Date() }} Parser Error: Unexpected token 'Date'

Property binding: [ ]

<img [src]="foto" [alt]="menu" />
<button [disabled]="habis">Pesan</button>
foto = 'martabak-telur.jpg'
habis = false

Attribute, class, dan style binding

<td [attr.colspan]="lebarKolom">Paket Hemat</td>
<p [class.habis]="habis">Terang Bulan Pandan</p>
<div [style.width.px]="lebarBar"></div>

Kapan pakai yang mana

Mau... Tulis
teks di dalam tag {{ menu }}
property elemen (src, disabled, value) [src]="foto"
atribut yang gak punya property bernama sama (colspan, aria-label) [attr.colspan]="lebarKolom"
satu class nyala atau mati [class.habis]="habis"
satu style dengan satuan [style.width.px]="lebarBar"

⚠️ Jebakan yang sering ketemu

TL;DR: {{ ekspresi }} menampilkan hasil ekspresi dari class sebagai teks: {{ harga * 2 }} dengan harga = 50000 jadi 100000, HTML di dalamnya tampil sebagai tulisan, dan assignment atau new ditolak compiler. [property]="ekspresi" memasang nilai ke property DOM, misalnya [src]="foto" dan [disabled]="habis"; tanpa kurung siku nilainya cuma teks apa adanya. [attr.colspan] untuk atribut yang gak punya property bernama sama, [class.habis] untuk satu class, [style.width.px] untuk satu style dengan satuan. Jangan taruh {{ }} di dalam [ ].

Yang akan kamu pelajari