Двусторонняя привязка данных — ngModel

В app.module.ts импортируем модуль @angular/forms (1) В imports прописываем добавленный модуль (2)

...
import { NgModule } from '@angular/core';

import { FormsModule } from '@angular/forms'; (1)
...

@NgModule({
declarations: [
AppComponent,
DateComponent
],
imports: [
...,
FormsModule (2)
],
providers: [],
bootstrap: [AppComponent]
})
...
<input type="text" [(ngModel)]="text" /> (3)
<p>{{text}}</p>
export class DateComponent implements OnInit {
text: string = "Hello world"; (4)
constructor() {

}

В шаблоне создаем двунаправленный бандинг при помощи директивы ngModel (3). Нужно обратить на синтаксис [(ngModel)], иначе работать не будет. А в классе компонента определяем переменную text (4).

Альтернатива двустороннему бандингу.

Прочитав некоторые статьи, двусторонний бандинг считается «тяжелой» операцией. Как альтернатива ему можно применять следующий код:

<input #newInput type="text" /> (1)
<button (click)="add(newInput.value)">add</button> (2)
export class DateComponent implements OnInit {
...
add(val:string) { (3)
console.log(val);
}
...

В input элемент добавляется специальный «атрибут»
(1), который начинается в символа #. После этого символа задается имя поле (грубо, ID), а потом параметр данного поля передаем в функцию (2). В коде component’а создаем обработчик для функции (3).

video
play-sharp-fill
Print Friendly, PDF & Email

Добавить комментарий