【问题标题】:In reactive forms of angular, why the parameter passed in formControlName is passed as a string?在 Angular 的反应形式中,为什么在 formControlName 中传递的参数作为字符串传递?
【发布时间】:2020-02-04 08:20:43
【问题描述】:

我正在创建一个有角度的反应形式。要将 TypeScript 文件中的 FormControl 对象同步到 html 文件中的表单控件,您需要使用 formControlName 指令。这样做如下:

formControlName="xyz"

其中 xyz 是 typescript 文件中定义的 FormControl 对象的键。 但在这种情况下,xyz 被视为字符串并且不会被评估。所以我的疑问是,由于 xyz 是 FormControl 对象的键,所以它应该被评估并且必须与方括号一起使用,如

[formControlName]="xyz"

我对 FormGroup 的使用方式感到满意,因为它与方括号一起使用,例如:

[FormGroup] = "abc"

其中 abc 是对组件的 typescript 文件中定义的 FormGroup 对象的对象引用。

那么请解释一下为什么 formControlName 不用方括号?

【问题讨论】:

  • 根据formControlName键,在父FormGroup中寻找关联的formControl指令对象。

标签: angular typescript angular-reactive-forms angular-forms


【解决方案1】:

此行为不限于formControlName,而是适用于所有角度输入/属性属性。它归结为您想要实现的目标以及您的角度风格指南是如何定义的。

1.使用方括号 []: 当您希望 angular 评估传递给 formControlName 的输入时,请使用 []。在下面的例子中 angular 会将name 视为您的打字稿类的属性,并且 解决它的价值。例如:[formControlName] = "name"

2。没有括号: 当您希望 angular 将值作为字符串传递给 formControlName 时,您不要使用 []。在下面的示例中,name 是字符串 还说明您确定表单控件的名称不 动态变化。例如:formControlName = "name"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多