angular2 表单验证:获取 ngForm 的实例
angular2 form validation: get an instance of ngForm
如何在组件中引用 "myform"?可能吗?
必须使用 formbuilder(我尽量避免使用它)?
<form #myForm="ngForm">
<label class="col-sm-12" [class.ng-invalid]="!(value.valid || Value.pristine)">Value</label>
<input type="text" required ngControl="value" #value="ngForm" class="form-control text-center" [(ngModel)]="value" />
</form>
为此,您需要利用 FormBuilder
class 和 ngFormModel
指令。 ngForm
和 ngControl
在线用于内嵌表单。
这是一个示例:
<form [ngFormModel]="myForm">
<label class="col-sm-12"
[class.ng-invalid]="!(myForm.controls.value.valid || myForm.controls.value.pristine)">Value</label>
<input type="text" [ngControlControl]="myForm.controls.value"
class="form-control text-center" [(ngModel)]="value" />
</form>
并且在组件 class 中:
@Component({
(...)
})
export class SomeComponent {
constructor() {
this.myForm = builder.group({
value: ["", Validators.required],
})
}
}
有关详细信息,请参阅本文:
实际上还有另一种方法可以做到这一点。您可以使用 ViewChild 注释,此处您的示例已改编:
<form #myForm="ngForm">
<label class="col-sm-12" [class.ng-invalid]="!(value.valid || Value.pristine)">Value</label>
<input type="text" required ngControl="value" #value="ngForm" class="form-control text-center" [(ngModel)]="value" />
class MyForm {
@ViewChild('myForm') form;
ngAfterViewInit() {
console.log(this.form)
this.form.control.valueChanges
.subscribe(values => console.log(values));
}
}
如何在组件中引用 "myform"?可能吗? 必须使用 formbuilder(我尽量避免使用它)?
<form #myForm="ngForm">
<label class="col-sm-12" [class.ng-invalid]="!(value.valid || Value.pristine)">Value</label>
<input type="text" required ngControl="value" #value="ngForm" class="form-control text-center" [(ngModel)]="value" />
</form>
为此,您需要利用 FormBuilder
class 和 ngFormModel
指令。 ngForm
和 ngControl
在线用于内嵌表单。
这是一个示例:
<form [ngFormModel]="myForm">
<label class="col-sm-12"
[class.ng-invalid]="!(myForm.controls.value.valid || myForm.controls.value.pristine)">Value</label>
<input type="text" [ngControlControl]="myForm.controls.value"
class="form-control text-center" [(ngModel)]="value" />
</form>
并且在组件 class 中:
@Component({
(...)
})
export class SomeComponent {
constructor() {
this.myForm = builder.group({
value: ["", Validators.required],
})
}
}
有关详细信息,请参阅本文:
实际上还有另一种方法可以做到这一点。您可以使用 ViewChild 注释,此处您的示例已改编:
<form #myForm="ngForm">
<label class="col-sm-12" [class.ng-invalid]="!(value.valid || Value.pristine)">Value</label>
<input type="text" required ngControl="value" #value="ngForm" class="form-control text-center" [(ngModel)]="value" />
class MyForm {
@ViewChild('myForm') form;
ngAfterViewInit() {
console.log(this.form)
this.form.control.valueChanges
.subscribe(values => console.log(values));
}
}