Angular Forms – 5

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.

Sharing is caring:

Leave a Comment