私は入力フィールドとボタンからなる非常に基本的なフォームを持っています。私は、数字以外のものが入力フィールドに入力されたときにエラーメッセージを表示するために、また入力フィールドが無効であるか空であるときに送信ボタンを無効にするために、angular2バリデーターを使用しようとしています。何らかの理由で、何が入力されたかにかかわらず、エラーメッセージが表示されます...何が間違っているの?非常に基本的なangle2フォームが検証されない
私のコード:
app.component.html:app.component.tsの
<div class="row">
<div class="col-md-4 col-md-push-4">
<form [formGroup]="barcodeForm" role="form" (ngSubmit)="submitBarcode(barcode)" >
<div class="form-group">
<input type="number" class="form-control" id="barcode" placeholder="Enter Barcode" [formControl]="barcodeForm.controls['barcode']" [(ngModel)]="barcode" name="barcode" #focusInput>
<div [hidden]="barcode.valid || barcode.pristine" class="alert alert-danger">A barcode can only consist of numbers (0-9)...</div>
</div>
<button class="btn btn-submit btn-block" [disabled]="!(barcode.valid) || barcode.pristine">Submit</button>
</form>
</div>
</div>
一部:テンプレートは駆動:フォームの2種類がありますangular2で
import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { RestService } from "./services/rest.service";
import { ProductModel } from "./models/product.model";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit {
@ViewChild('focusInput') focusInput: ElementRef;
barcode: string;
barcodeForm: FormGroup;
product: ProductModel;
constructor(fb: FormBuilder, private restService: RestService){
this.barcodeForm = fb.group({
'barcode':['', [Validators.required, Validators.pattern("[0-9]+")]]
});
}
ngModelを使用せずにバーコードフィールドの値を取得するにはどうすればよいですか?私はバーコードのようなバーコードモデルを持っていません:文字列... – user2094257
'(ngSubmit)=" submitBarcode(barcodeForm.value.barcode) "' – Amit
ありがとう@Amit Dahan – user2094257