Pada modul ini kita akan bahas penggunaan two-way binding pada form.
Buka file app.component.html, lalu tambahkan input type text dan element paragraph untuk menampilkan data two-way binding.
<div class="form-group">
<textarea name="secretAnswer" rows="3" class="form-control" [(ngModel)]="answerSecret"></textarea>
<p>Your answer is: {{answerSecret}}</p>
</div>
Kemudian buka file app.component.ts, tambahkan property untuk menyimpan data two-way binding, dalam hal ini adalah property answerSecret.
answerSecret = '';
Berikut isi lengkap file app.component.html
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-10 col-md-8 col-sm-offset-1 col-md-offset-2">
<form (ngSubmit)="onSubmit()" #f="ngForm">
<div id="user-data">
<div class="form-group">
<label for="username">Username</label>
<input type="text" id="username" class="form-control" ngModel name="username" required>
</div>
<button class="btn btn-default" type="button">Suggest an Username</button>
<div class="form-group">
<label for="email">Mail</label>
<input type="email" id="email" class="form-control" ngModel name="email" required email #vemail="ngModel">
<span *ngIf="!vemail.valid && vemail.touched">Please input valid email...</span>
</div>
</div>
<div class="form-group">
<label for="secret">Secret Questions</label>
<select id="secret" class="form-control" [ngModel]="defaultSecret" name="secret">
<option value="pet">Your first Pet?</option>
<option value="teacher">Your first teacher?</option>
</select>
</div>
<div class="form-group">
<textarea name="secretAnswer" rows="3" class="form-control" [(ngModel)]="answerSecret"></textarea>
<p>Your answer is: {{answerSecret}}</p>
</div>
<button class="btn btn-primary" type="submit" [disabled]="!f.valid">Submit</button>
</form>
</div>
</div>
</div>
Isi lengkap file app.component.ts
import { Component, ViewChild } from '@angular/core';
import { NgForm } from '@angular/forms';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
@ViewChild('f') myForm! : NgForm;
defaultSecret = 'pet';
//property untuk two way binding
answerSecret = '';
suggestUserName() {
const suggestedName = 'Superuser';
}
// pendekatan pertama
// onSubmit(form: NgForm){
// console.log(form);
// }
onSubmit(){
console.log(this.myForm);
}
}
Sesuai ekspektasi, kita dapat menggunakan two-way binding untuk component form.