Jika Anda menggunakan FormBuilder, lihat jawaban @ dfsq.
Jika Anda tidak menggunakan FormBuilder, ada dua cara untuk diberitahu tentang perubahan.
Metode 1
Seperti dibahas dalam komentar pada pertanyaan, gunakan peristiwa yang mengikat pada setiap elemen input. Tambahkan ke templat Anda:
<input type="text" class="form-control" required [ngModel]="model.first_name"
(ngModelChange)="doSomething($event)">
Kemudian di komponen Anda:
doSomething(newValue) {
model.first_name = newValue;
console.log(newValue)
}
The Bentuk Halaman memiliki beberapa informasi tambahan tentang ngModel yang relevan di sini:
Ini ngModelChangebukan <input>acara elemen. Ini sebenarnya merupakan properti acara dari NgModelarahan. Ketika Angular melihat target yang mengikat dalam formulir [(x)], ia mengharapkan xarahan untuk memiliki xproperti input dan xChangeproperti output.
Keanehan lainnya adalah ekspresi template model.name = $event,. Kami terbiasa melihat $eventobjek yang berasal dari acara DOM. Properti ngModelChange tidak menghasilkan acara DOM; ini adalah EventEmitterproperti Angular yang mengembalikan nilai kotak input saat diaktifkan ..
Kami hampir selalu lebih suka [(ngModel)]. Kami mungkin membagi penjilidan jika kami harus melakukan sesuatu yang istimewa dalam penanganan acara seperti debounce atau throttle stroke kunci.
Dalam kasus Anda, saya kira Anda ingin melakukan sesuatu yang istimewa.
Metode 2
Tentukan variabel templat lokal dan setel ke ngForm.
Gunakan ngControl pada elemen input.
Dapatkan referensi ke arahan NgForm formulir menggunakan @ViewChild, kemudian berlangganan ControlGroup NgForm untuk perubahan:
<form #myForm="ngForm" (ngSubmit)="onSubmit()">
....
<input type="text" ngControl="firstName" class="form-control"
required [(ngModel)]="model.first_name">
...
<input type="text" ngControl="lastName" class="form-control"
required [(ngModel)]="model.last_name">
class MyForm {
@ViewChild('myForm') form;
...
ngAfterViewInit() {
console.log(this.form)
this.form.control.valueChanges
.subscribe(values => this.doSomething(values));
}
doSomething(values) {
console.log(values);
}
}
plunker
Untuk informasi lebih lanjut tentang Metode 2, lihat video Savkin .
Lihat juga @ jawaban Thierry untuk informasi lebih lanjut tentang apa yang dapat Anda lakukan dengan yang valueChangesdapat diamati (seperti melonggarkan / menunggu sedikit sebelum memproses perubahan).