NgForm
创建一个顶级的 FormGroup
实例,并把它绑定到一个表单,以跟踪表单的聚合值及其验证状态。
Creates a top-level FormGroup
instance and binds it to a form to track aggregate form value and validation status.
Exported from
选择器
属性
属性 | 说明 |
---|---|
submitted: boolean | 只读 返回是否已触发表单提交。 Returns whether the form submission has been triggered. |
form: FormGroup | |
@Output() | “ngSubmit” 的事件发射器 Event emitter for the "ngSubmit" event |
@Input('ngFormOptions') | updateOn:为所有子级的 updateOn: Sets the default |
formDirective: Form | 只读 指令实例。 The directive instance. |
control: FormGroup | 只读 |
path: string[] | 只读 返回表示该组路径的数组。由于此指令始终位于调用表单的顶层,因此它始终是一个空数组。 Returns an array representing the path to this group. Because this directive always lives at the top level of a form, it is always an empty array. |
controls: { [key: string]: AbstractControl; } | 只读 返回此组中控件的映射表。 Returns a map of the controls in this group. |
继承自 ControlContainer
继承自 AbstractControlDirective
-
abstract control: AbstractControl | null
-
value: any
-
valid: boolean | null
-
invalid: boolean | null
-
pending: boolean | null
-
disabled: boolean | null
-
enabled: boolean | null
-
errors: ValidationErrors | null
-
pristine: boolean | null
-
dirty: boolean | null
-
touched: boolean | null
-
status: string | null
-
untouched: boolean | null
-
statusChanges: Observable<any> | null
-
valueChanges: Observable<any> | null
-
path: string[] | null
-
validator: ValidatorFn | null
-
asyncValidator: AsyncValidatorFn | null
模板变量参考手册
标识符 | 用途 |
---|---|
ngForm | #myTemplateVar="ngForm" |
说明
只要你导入了 FormsModule
,该指令就会默认在所有 <form>
标签上生效。你不需要再添加任何特殊的选择器。
As soon as you import the FormsModule
, this directive becomes active by default on all <form>
tags. You don't need to add a special selector.
你可以以 ngForm
作为 key 把该指令导出到一个局部模板变量(如 #myForm="ngForm"
)。这是可选的,但很有用。 来自本指令背后的 FormGroup
实例的很多属性,都被复制到了指令自身,所以拿到一个对该指令的引用就可以让你访问此表单的聚合值和验证状态, 还有那些用户交互类的属性,比如 dirty
和 touched
。
You optionally export the directive into a local template variable using ngForm
as the key (ex: #myForm="ngForm"
). This is optional, but useful. Many properties from the underlying FormGroup
instance are duplicated on the directive itself, so a reference to it gives you access to the aggregate value and validity status of the form, as well as user interaction properties like dirty
and touched
.
要使用该表单注册的子控件,请使用带有 name
属性的 NgModel
。你可以使用 NgModelGroup
在表单中创建子组。
To register child controls with the form, use NgModel
with a name
attribute. You may use NgModelGroup
to create sub-groups within the form.
如果需要,还可以监听该指令的 ngSubmit
事件,以便当用户触发了一次表单提交时得到通知。发出 ngSubmit
事件时,会携带原始的 DOM 表单提交事件。
If necessary, listen to the directive's ngSubmit
event to be notified when the user has triggered a form submission. The ngSubmit
event emits the original form submission event.
在模板驱动表单中,所有 <form>
标签都会自动应用上 NgForm
指令。 如果你只想导入 FormsModule
而不想把它应用于某些表单中,比如,要想使用 HTML5 验证,你可以添加 ngNoForm
属性, 这样标签就不会在 <form>
上创建 NgForm
指令了。 在响应式表单中,则不需要用 ngNoForm
,因为 NgForm
指令不会自动应用到 <form>
标签上,你只要别主动添加 formGroup
指令就可以了。
In template driven forms, all <form>
tags are automatically tagged as NgForm
. To import the FormsModule
but skip its usage in some forms, for example, to use native HTML5 validation, add the ngNoForm
and the <form>
tags won't create an NgForm
directive. In reactive forms, using ngNoForm
is unnecessary because the <form>
tags are inert. In that case, you would refrain from using the formGroup
directive.
监听表单提交
Listening for form submission
下面的示例显示如何从 “ngSubmit” 事件中捕获表单值。
The following example shows how to capture the form values from the "ngSubmit" event.
import {Component} from '@angular/core';
import {NgForm} from '@angular/forms';
@Component({
selector: 'example-app',
template: `
<form #f="ngForm" (ngSubmit)="onSubmit(f)" novalidate>
<input name="first" ngModel required #first="ngModel">
<input name="last" ngModel>
<button>Submit</button>
</form>
<p>First name value: {{ first.value }}</p>
<p>First name valid: {{ first.valid }}</p>
<p>Form value: {{ f.value | json }}</p>
<p>Form valid: {{ f.valid }}</p>
`,
})
export class SimpleFormComp {
onSubmit(f: NgForm) {
console.log(f.value); // { first: '', last: '' }
console.log(f.valid); // false
}
}
Setting the update options
The following example shows you how to change the "updateOn" option from its default using ngFormOptions.
<form [ngFormOptions]="{updateOn: 'blur'}">
<input name="one" ngModel> <!-- this ngModel will update on blur -->
</form>
Native DOM validation UI
In order to prevent the native DOM form validation UI from interfering with Angular's form validation, Angular automatically adds the novalidate
attribute on any <form>
whenever FormModule
or ReactiveFormModule
are imported into the application. If you want to explicitly enable native DOM validation UI with Angular forms, you can add the ngNativeValidate
attribute to the <form>
element:
<form ngNativeValidate>
...
</form>
方法
在该组中设置控件指令,重新计算其值和有效性并将该实例添加到内部指令列表的方法。 Method that sets up the control directive in this group, re-calculates its value and validity, and adds the instance to the internal list of directives. |
从提供的 Retrieves the |
从指令的内部列表中删除 Removes the |
向表单添加一个新的 Adds a new | |||
参数
返回值
|
从表单中删除 Removes the | |||
参数
返回值
|
为所提供的 Retrieves the | |||
参数
返回值 |
为所提供的 Sets the new value for the provided |
设置此 Sets the value for this |
在表单上触发 “submit” 事件时调用的方法。触发 Method called when the "submit" event is triggered on the form. Triggers the |
在表单上触发 “reset” 事件时要调用的方法。 Method called when the "reset" event is triggered on the form. |
参数没有参数。 返回值
|
将表单重置为初始值并重置其提交状态。 Resets the form to an initial value and resets its submitted status. |