{{ fullName() }}
`, }) export class UserProfile { firstName = input(); lastName = input(); // `fullName`은 컴포넌트의 공개 API가 아니며 템플릿에서 사용합니다. protected fullName = computed(() => `${this.firstName()} ${this.lastName()}`); } ``` ### 변경하면 안 되는 프로퍼티에는 `readonly`를 사용하세요 Angular가 초기화하는 컴포넌트와 디렉티브 프로퍼티는 `readonly`로 표시하세요. `input`, `model`, `output`, 쿼리로 초기화하는 프로퍼티가 여기에 해당합니다. readonly 접근 제한자는 Angular가 설정한 값을 덮어쓰지 못하도록 합니다. ```ts @Component(/* ... */) export class UserProfile { readonly userId = input(); readonly userSaved = output(); readonly userName = model(); } ``` 데코레이터 기반의 `@Input`, `@Output`, 쿼리 API를 사용하는 컴포넌트와 디렉티브에서는 이 지침이 출력 프로퍼티와 쿼리에 적용되지만 입력 프로퍼티에는 적용되지 않습니다. ```ts @Component(/* ... */) export class UserProfile { @Output() readonly userSaved = new EventEmitter