我正在关注一个关于反应形式的 Angular 4 教程。在使用 FormGroup 和 FormControl 指令时,我发现不一致 -
<form [formGroup]="formObj">
<div class="form-group">
<input formControlName="username">
它在 square-brackets 下应用[4]指令而不是 square-brackets 的 formControlName 指令。
我在这里错过了什么?
我正在关注一个关于反应形式的 Angular 4 教程。在使用 FormGroup 和 FormControl 指令时,我发现不一致 -
<form [formGroup]="formObj">
<div class="form-group">
<input formControlName="username">
它在 square-brackets 下应用[4]指令而不是 square-brackets 的 formControlName 指令。
我在这里错过了什么?
2 回答
如果你有一个带有输入
mydir
的指令mydir
:它可以带或不带支架使用:
在第一种情况下,
mydir
绑定的值将是一个字符串exp
:在第二种情况下,表达式将被评估为父组件包含的
exp
:现在,以表格指令为例。
formGroup
需要FormGroup
类的实例。如果不使用[]
,则指令获取字符串formObj
而不是对象。formControlName
需要一个字符串,该字符串是要在父表单组中查找的控件的名称。这就是为什么它没有括号使用。好的问题,对于 Angular 来说很重要:指令(e.g. formGroup 或 formControlName)可以在正常写入时设置为等于字符串,或者在方括号中括起时设置为等于组件 TypeScript 中的值。
所以
[formGroup]="formObj"
将 formGroup 指令设置为等于实际的动态对象,而formControlName="username"
只是设置为等于字符串“name”