初始化FormGroup
并在FormGroup
回调中禁用FormControl
或HttpClient.get
时,FormGroup
不会在HTML中禁用,但是{{ 1}}属性报告为disabled
。
请参见工作示例here
我可以通过如下方法将禁用的代码包装在超时中来解决此问题,但这是不希望的:
true
当不将setTimeout(() => {
this.form.disable();
});
设置为新实例时,它确实可以工作,但是我想将其设置为新实例。
重现此问题的最小示例:
FormGroup
答案 0 :(得分:0)
对我来说,如果您只设置值而不是传递formGroup的整个新实例,那么它会起作用
values = df.groupby('node_i')['value_j'].transform('mean').fillna(1)
df['w'] = np.where(df['value_j'].notnull(),df['value_j'],values).astype(int)
df
node_i node_j value_i value_j w
0 3 4 89 33.0 33
1 3 2 89 NaN 51
2 3 5 89 69.0 69
3 0 2 45 NaN 89
4 0 3 45 89.0 89
5 1 2 109 NaN 1
6 1 8 109 NaN 1
答案 1 :(得分:0)
您可以使用ChangeDetectorRef
解决问题
这是一个例子
import { Component, OnInit, ChangeDetectorRef } from '@angular/core';
export class App implements OnInit {
constructor(private personService: PersonService, readonly cd: ChangeDetectorRef) {}
public onFetchPerson() {
this.personService.fetchPerson().subscribe(() => {
this.form = new FormGroup({
firstName: new FormControl('John'),
surname: new FormControl('Doe'),
});
this.cd.detectChanges();
this.form.disable();
console.log(this.form);
});
}
}
答案 2 :(得分:0)
我会使用FormBuilder,这是创建表单和添加验证的非常整洁的方式。
已经创建了表单,这使您可以修补(部分更新)表单。 要设置值,您需要在对象中具有所有属性。
FormBuilder提供了语法糖,可以缩短FormControl,FormGroup或FormArray的创建实例。它减少了构建复杂表格所需的样板数量。
trim_1