Saya memiliki textarea berikut ini:
<textarea class="form-control" [(ngModel)]="content" name="content" required>
</textarea>
dan tombol kirim berikut:
<button type="submit" class="btn btn-default" [disabled]="content.valid">New comment</button>
Seperti yang saya lihat di panduan formulir angular 2 (https://angular.io/docs/ts/latest/guide/forms.html) saya dapat menggunakan x.valid
untuk memeriksa apakah itu tidak kosong.
Mengapa saya mendapatkan TypeError: Tidak dapat membaca properti 'valid' dari undefined
error?
Dalam kasus Anda konten adalah properti pada model Anda.
Untuk melakukan apa yang Anda inginkan, Anda perlu menggunakan nilai referensi template untuk kontrol formulir #myControl="ngModel" dan kemudian Anda memiliki akses ke properti valid: myControl.valid.
Jadi dalam contoh Anda:
<textarea class="form-control" [(ngModel)]="content"
name="content" required #myControl="ngModel">
</textarea>
Dan gunakan dalam tag tombol:
<button type="submit" class="btn btn-default"
[disabled]="myControl.valid">New comment</button>
<div class="form-group">
<label for="inputEmail" class="col-lg-2 control-label">Email</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="name" placeholder="Name" minlength="4" maxlength="24" [(ngModel)]="name" name="email" #myName="ngModel" required>
<div *ngIf="myName.errors && (myName.dirty || myName.touched)" class="alert alert-danger">
<div [hidden]="!myName.errors.required">
Name is required
</div>
<div [hidden]="!myName.errors.minlength">
Name must be at least 4 characters long.
</div>
<div [hidden]="!myName.errors.maxlength">
Name cannot be more than 24 characters long.
</div>
</div>
</div>
</div>