如何动态设置Angular表单数据

问题描述

我下面有一个Angular表单组。我想做的很简单,初始化表单,如果没有数据进入''属性,然后将表单值设置为emtpy字符串data,以备用户输入。但是,如果有{em> 表单数据是通过setValue属性输入的,那么我想初始化该表单,但要使用来自输入数据的预填充形式属性。我正在使用@Component({...}) export class SignupFormComponent implements OnInit { input(): data; user: FormGroup; constructor(private fb: FormBuilder) { } ngOnInit() { this.user = this.fb.group({ name: ['',[Validators.required,Validators.minLength(2)]],email: ['',Validators.required] }); } if(this.data) { this.user.setValue({ name: this.data.name,email: this.data.email }) } } 方法,但是它看起来并不优雅。好像我在重复很多初始化代码。有更好的方法吗?

{{1}}

解决方法

Angular使此操作更简单:

@Component({...})
export class SignupFormComponent implements OnInit {
  Input(): data;
  user: FormGroup;
  constructor(private fb: FormBuilder) { }
  ngOnInit() {
    this.user = this.fb.group({
      name: ['',[Validators.required,Validators.minLength(2)]],email: ['',Validators.required]
    });
  }
  if(this.data) {
    this.user.setValue(this.data) //no need set values separately
  }
}
,

结帐演示在这里进入此Stackblitz Link

对于第一次初始化,您基本上只需要直接设置数据即可进行控制。

@Input() data;
form: FormGroup;

constructor(private fb: FormBuilder) { }

ngOnInit() {
   this.form = this.fb.group ({
     nameCtr: [{value :this.data?.dataName || '',disabled: false}]
})
 

如果设置了data属性,则会从属性中设置默认数据,否则会将default分配给空字符串。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...