有多少指令使用ngModel作为输入,有多少指令使用它作为选择器?

时间:2017-10-23 19:05:03

标签: angular

在对两个Angular表单模块(FormsModule和ReactiveFormsModule)进行逆向工程之后,我计算了三次使用ngModel作为指令中的输入。

FormsModule 中,ngModel在 NgModel 指令中使用一次。 ngModel是指令选择器的一部分(selector:'[ngModel]:not([formControlName]):not([formControl])')。因此,对于NgModel指令,ngModel有两个角色。它是一个输入,同时也是一个选择器。

在ReactiveFormsModule中,ngModel使用两次。第一个用途是在 FormControlDirective (选择器:'[formControl]')中。 第二个是在 FormControlName 指令中(选择器:'[formControlName]')。在这两种情况下,ngModel都是一个简单的输入,它不是指令选择器的一部分。

三次出现允许将FormControl绑定到模型。但是,第一个还有另一个副作用:它还会在将FormControl绑定到模型之前创建FormControl。

还有其他用途吗?我错过了其他的吗?

2 个答案:

答案 0 :(得分:1)

  

有多少指令使用ngModel作为输入以及使用多少指令   它作为选择器?

以下指令使用ngModel作为输入绑定:

反应形式:

  • formControl
  • formControlName

模板驱动表格:

  • ngModel

以下指令使用ngModel作为选择器:

  • NgModel模板驱动指令
  • 具有相应属性的所有内置验证器:[required][ngModel][email][ngModel][minlength][ngModel]等。
  • 所有内置控件值访问器,如DefaultValueAccessorNumberValueAccessor等。请在此深入了解ControlValueAccessorNever again be confused when implementing ControlValueAccessor in Angular forms
  • NgControlStatus自动应用于Angular表单控件,根据控件状态设置CSS类ng-validng-pending和其他类

答案 1 :(得分:0)

[(ngModel)]主要用作双向绑定,这意味着您可以将其值传递给TS或JS文件中的变量。 我给你举个例子。

<input [(ngModel)]="array.test"</input>

将使用输入中写入的值为您的JSON数组提供属性测试。

希望这有帮助。