Двусторонняя привязка событий в Angular
Также в Angular можно сделать двустороннюю привязку событий обоих компонентов: родительского и дочернего. Давайте сделаем в дочернем HTML-шаблоне инпут с двусторонней привязкой имени пользователя и функции, меняющей имя:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Перейдем в наш дочерний компонент и импортируем в него
декоратор @Input
. Он нужен для работы с
инпутами :
import { Component, Input, Output, EventEmitter } from '@angular/core';
Далее привязываем декоратор @Input
к имени пользователя.
А декоратор @Output
привязываем к объекту userNameChange
,
который будет вызываться в функции onNameChange
:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
Теперь переходим в главный компонент и добавляем к его классу свойство имя:
export class AppComponent {
name: string = 'alex';
}
А в HTML-шаблоне родительского компонента выполняем
двустороннюю привязку свойства userName
со значением свойства name
родительского
компонента:
<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Реализуйте двустороннюю привязку событий родительского и дочернего компонентов согласно приведенному в уроке примеру.
На основе предыдущей задачи сделайте двустороннюю привязку возраста пользователя.