【问题标题】:Binding to [value] doesn't update FormControl's value绑定到 [value] 不会更新 FormControl 的值
【发布时间】:2019-01-13 13:32:57
【问题描述】:

更多信息:

我有一个物品清单。每个项目都是MyClass 的一个实例。 MyClass 有一个属性 text 和一个返回此属性的方法 someMethod()

我有一个*ngFor,它列出了页面上的所有项目,当我单击其中一个时,(click)="currentItem = item" 被执行,[value]="someMethod()" 实际上是[value]="currentItem.someMethod()",因此所选项目的文本被写入文本区域。


我正在使用响应式表单,并且在我的模板中有以下内容:

<textarea formControlName="myTextarea" [value]="someMethod()" ...

当页面呈现并且someMethod() 输出一个字符串时,我可以看到该字符串显示在文本区域内。

但是,FormControlvalue 属性未更新。为什么?

【问题讨论】:

标签: angular angular-reactive-forms


【解决方案1】:

看这个链接https://coursetro.com/posts/code/108/Angular-5-Interpolation,-Property-Binding-&-Event-Binding-Tutorial#

您可以将 [(ngModel)] 与反应式表单一起使用。

<form [formGroup]="form">
<input name="fname" formControlName="first" [(ngModel)]="example.first">
<input name="lname" formControlName="last" [(ngModel)]="example.last">
</form>
export class App {
form: FormGroup;
example = { fname: '', lname: ''}
constructor(builder: FormBuilder) {
 this.form = builder.group({ first: '', last:''}) 
}
}

【讨论】:

  • 使用 [(ngModel)] 可以做到这一点,但是 Angular 6 向我显示了一个已弃用的警告,并告诉我不应该将它与 formControlName 一起使用。
  • 导出类 App { form: FormGroup;对象{名称};构造函数(builder:FormBuilder){ this.form = builder.group(myFormControlName:[this.object.name,Validators.required]); } }
  • 您不能将 ngModel 与反应形式一起使用。改用 [(value)]
【解决方案2】:

那是因为你在 [value] 中调用 SomeMethod()。

你到底在寻找什么?

看这里FormGroup

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 2023-03-28
    • 2012-02-29
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    相关资源
    最近更新 更多