如何设置角度形式的默认值?

时间:2019-03-01 20:36:45

标签: angular

我有一个Angular应用,其中包含处理特定表单的组件。这种形式相对复杂,其他对象内部都有各种对象。

我想知道是否可以使用初始值重置此表单。例如:

  createForm() {
    this.form = this.fb.group({
        id: [''],
        category: ['', Validators.compose([
            Validators.required,
            Validators.minLength(3),
            Validators.maxLength(64)
        ])],        
        user: this.fb.group({
            username: ['', Validators.compose([
                Validators.required,
                Validators.minLength(3),
                Validators.maxLength(13000)
            ])],
            lastname: ['', Validators.compose([
              Validators.required,
              Validators.minLength(2),
              Validators.maxLength(64)
            ])]

      // ...and so on

当我调用form.reset()时,可以通过一个选项传递默认值,但是它似乎只对顶级属性有效,我想将默认值(一个空字符串)设置为所有属性,包括在其他对象/表单组内部更深层次的属性。

有没有一种自然的方式来做到这一点?谢谢

1 个答案:

答案 0 :(得分:0)

hi尝试将表单组放在函数外部,然后将默认值放置如下:

this.form = this.fb.group({
    id: ['sampleId'],
    category: ['sampleCat', Validators.compose([
        Validators.required,
        Validators.minLength(3),
        Validators.maxLength(64)
    ])],        
    user: this.fb.group({
        username: ['sampleUsername', Validators.compose([
            Validators.required,
            Validators.minLength(3),
            Validators.maxLength(13000)
        ])],
        lastname: ['sampleLastname', Validators.compose([
          Validators.required,
          Validators.minLength(2),
          Validators.maxLength(64)
        ])]

  // ...and so on