Двупосочна връзка на събития в Angular
В Angular също така може да се направи двупосочна връзка на събития и на двата компонента: родителски и детски. Нека направим в детския HTML шаблон input с двупосочна връзка на потребителското име и функция, която променя името:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Нека преминем към нашия детски компонент и
да импортираме в него декоратора @Input.
Той е необходим за работа с inputs:
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>
Реализирайте двупосочна връзка на събития между родителски и детски компоненти според дадения в урока пример.
На база на предишната задача направете двупосочна връзка на възрастта на потребителя.