Angularλ μ ν리μΌμ΄μ
λ΄ λΌμ°νΈ νλΌλ―Έν° μ²λ¦¬ λ°©μμμ λλΌμ΄ λ°μ μ 보μ¬μ£Όκ³ μμ΅λλ€. Angular 16 μ΄μ λ²μ μΌλ‘ μμ
ν΄ λ³Έ κ°λ°μλΌλ©΄ λ¨μν id
νλλ₯Ό μΆμΆνκΈ° μν΄ ActivatedRoute
μ paramMap
μ λ°λ³΅μ μΌλ‘ μ¬μ©ν κΈ°μ΅μ΄ μμ κ²μ
λλ€.
νμ§λ§ μ΄μ Angular 20μ μ΅μ κ°λ° ν¨ν΄κ³Ό μ μ΄μΈλ¦¬λ λ λμ λ°©λ²μ΄ μμ΅λλ€. λ°λ‘ withComponentInputBinding()
μ
λλ€.
μ΄ κΈμμλ μ΄ κΈ°λ₯μ΄ λ¬΄μμΈμ§, μ΄λ€ λ¬Έμ λ₯Ό μ묡μ μΌλ‘ μ΄λνλμ§, κ·Έλ¦¬κ³ μ΄λ₯Ό μ°μνκ² ν΄κ²°νλ λ°©λ²μ μκ°ν©λλ€ β Angular 20 κΈ°μ€μΌλ‘ μ€λͺ ν©λλ€.
π‘ withComponentInputBinding()μ΄λ?
withComponentInputBinding()
μ λΌμ°νΈ νλΌλ―Έν°λ₯Ό μ»΄ν¬λνΈμ @Input()
μμ±μ μλμΌλ‘ λ°μΈλ©ν μ μλλ‘ νλ μ€μ μ νΈλ¦¬ν°μ
λλ€.
μ΄ κΈ°λ₯μ μ¬μ©νλ©΄ λΌμ°νΈ μ΅μ λ²λΈμ μλμΌλ‘ ꡬλ ν νμ μμ΄ μ»΄ν¬λνΈμμ νλΌλ―Έν°λ₯Ό λ°λ‘ μ¬μ©ν μ μμ΅λλ€.
μλ₯Ό λ€μ΄, /user/:id
λΌλ κ²½λ‘κ° μκ³ μ»΄ν¬λνΈμ id
λΌλ @Input()
μ΄ μλ€λ©΄, Angularλ μλμΌλ‘ μ΄λ₯Ό λ§€νν΄μ€λλ€ β λ¨, λΌμ°ν° μ€μ μμ μ΄ κΈ°λ₯μ νμ±ννμ κ²½μ°μλ§.
β μ¬μ© λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€:
- κ²½λ‘λ₯Ό μ μν©λλ€:
{ path: 'user/:id', component: UserComponent }
- μ»΄ν¬λνΈμμ
@Input()
μ μ¬μ©ν©λλ€:
@Input() id!: string;
- λΌμ°ν° μ€μ μμ κΈ°λ₯μ νμ±νν©λλ€:
provideRouter(routes, withComponentInputBinding())
μ΄μ λ μ΄μ ꡬλ μμ΄λ λΌμ°νΈ νλΌλ―Έν°κ° μ»΄ν¬λνΈμ μλ μ λ¬λ©λλ€.
π λ¬Έμ μ : μ½λμμμ μλ λͺ¨νΈμ±
μ΄ κΈ°λ₯μ λΆλͺ μ μ©νμ§λ§, μ½λμ μλλ₯Ό ν릴 μ μλ λ¬Έμ κ° μμ΅λλ€.
@Input()
μ μΌλ°μ μΌλ‘ λΆλͺ¨ μ»΄ν¬λνΈλ‘λΆν° λ°μ΄ν°λ₯Ό μ λ¬λ°λλ€λ μλ―Έλ‘ μ¬μ©λ©λλ€. κ·Έλ°λ° μ¬κΈ°μ λΌμ°νΈ νλΌλ―Έν°λ₯Ό μ°κ²°νλ©΄, μ½λμ μλ―Έκ° μ λ§€ν΄μ§ μ μμ΅λλ€.
λ€λ₯Έ κ°λ°μ(νΉμ λ―Έλμ μμ )λ μ΄ κ°μ΄ URLμμ μλ€λ μ¬μ€μ νμ νμ§ λͺ»νκ³ , λΆλͺ¨ μ»΄ν¬λνΈμμ μ λ¬λμλ€κ³ μ°©κ°ν μ μμ΅λλ€.
π§ͺ ν΄κ²° λ°©λ²: λͺ νν μλλ₯Ό μν λ³μΉ μ¬μ©
ν΄κ²°μ±
μ κ°λ¨ν©λλ€. Angularμ λ΄μ₯ input()
μκ·Έλμ λ³μΉμ λΆμ¬, μλ₯Ό λ€μ΄ routeBinding()
μ΄λΌλ μ΄λ¦μΌλ‘ μ¬μ©νλ κ²μ
λλ€.
import { input, input as routeBinding } from '@angular/core';
μ΄μ λ€μκ³Ό κ°μ΄ μ λ ₯μ μΆμ²λ₯Ό λͺ νν ꡬλΆν μ μμ΅λλ€:
input()
β λΆλͺ¨ μ»΄ν¬λνΈμμ μ λ¬λ κ°routeBinding()
β λΌμ°ν°μμ μ λ¬λ κ°
μμ:
id = routeBinding<string>(); // λΌμ°ν°μμ μ λ¬λ νλΌλ―Έν°
title = input<string>(); // λΆλͺ¨ μ»΄ν¬λνΈμμ μ λ¬λ μ
λ ₯κ°
μ΄ μμ λ³κ²½μ Angularμ μλ λ°©μμ μλ¬΄λ° μν₯μ μ£Όμ§ μμ§λ§, μ½λμ μλλ₯Ό λͺ νν νκ³ , κ°λ μ±κ³Ό μ μ§λ³΄μλ₯Ό κ°μ ν©λλ€.
π§± μμ: Angular 20μμ λͺ νν λΌμ°νΈ νλΌλ―Έν° λ°μΈλ©
πΉ 1λ¨κ³: UserComponent
μμ±
import { Component, input, input as routeBinding } from '@angular/core';
@Component({
selector: 'app-user',
standalone: true,
template: `
<h2>μ μ μ»΄ν¬λνΈ</h2>
<p>λΌμ°νΈ νλΌλ―Έν° ID: <strong></strong></p>
`,
})
export class UserComponent {
id = routeBinding<string>(); // λΌμ°ν°μμ μ λ¬
regularInput = input<string>(); // λΆλͺ¨μμ μ λ¬
}
πΉ 2λ¨κ³: λ£¨νΈ μ»΄ν¬λνΈ μ€μ
import { Component } from '@angular/core';
import { RouterLink, RouterOutlet } from '@angular/router';
@Component({
selector: 'app-root',
standalone: true,
imports: [RouterOutlet, RouterLink],
template: `
<h1>Angular 20 λΌμ°νΈ νλΌλ―Έν° λ°λͺ¨</h1>
<nav>
<a [routerLink]="['/user', 42]">/user/42 μ΄λ</a>
</nav>
<router-outlet/>
`,
})
export class AppComponent {}
πΉ 3λ¨κ³: λΌμ°ν° μ€μ λ° μ± λΆνΈμ€νΈλ©
import { bootstrapApplication } from '@angular/platform-browser';
import { provideRouter, Routes, withComponentInputBinding } from '@angular/router';
import { AppComponent } from './app.component';
import { UserComponent } from './user.component';
const routes: Routes = [
{
path: 'user/:id',
component: UserComponent,
},
];
bootstrapApplication(AppComponent, {
providers: [provideRouter(routes, withComponentInputBinding())],
});
β μμ½
| κΈ°λ₯ | μ€λͺ
|
| ----------------------------- | ----------------------------------- |
| withComponentInputBinding()
| λΌμ°νΈ νλΌλ―Έν°λ₯Ό μ»΄ν¬λνΈ μ
λ ₯μ μλ μ°κ²° |
| λ³μΉ μ¬μ© | routeBinding()
λ³μΉμ μ¬μ©νμ¬ μ½λ μλ λͺ
νν |
| Angular 20 μλ²½ νΈν | μ€ν λμΌλ‘ μ»΄ν¬λνΈ λ° μκ·Έλ μν€ν
μ²μ μ΅μ |
| DX ν₯μ | λ μ¬μ΄ λλ²κΉ
κ³Ό νμ
κ°λ₯ |
π λ§λ¬΄λ¦¬ μκ°
λΉλ‘ withComponentInputBinding()
μ μ΄μ λ²μ μ λμ
λ κΈ°λ₯μ΄μ§λ§, Angular 20μ μ΄ κΈ°λ₯μ λμ
νκΈ°μ μλ²½ν μμ μ
λλ€. μ€ν λμΌλ‘ μ»΄ν¬λνΈμ μκ·Έλ μ€μ¬ μν€ν
μ²κ° μ€μ¬μ΄ λ μ§κΈ, λΌμ°ν
λ°©μλ ν λ¨κ³ μ§νν νμκ° μμ΅λλ€.
input()
μ λΌμ°νΈ νλΌλ―Έν°μ©μΌλ‘ aliasνμ¬ μ¬μ©νλ μ΄ μμ νΈλ¦μ μ½λ μλλ₯Ό λͺ
νν νκ³ , νμ
κ³Ό μ μ§λ³΄μλ₯Ό μ½κ² λ§λλλ€.
π¬ μ¬λ¬λΆμ μκ°μ?
μ΄ λ³μΉ ν¨ν΄μ Angular 20 νλ‘μ νΈμ λμ
ν΄λ³΄μκ² μ΅λκΉ?
Angularμμ 곡μμ μΌλ‘ @RouteParam()
κ°μ λ°μ½λ μ΄ν°λ₯Ό λμ
νλ©΄ μ’μκΉμ?