【问题标题】:Angular2 Update FormGroup nested value?Angular2更新FormGroup嵌套值?
【发布时间】:2017-06-11 21:30:57
【问题描述】:

我在一个组件中有这个:

private formBuilder: FormBuilder

...

signupForm: FormGroup;

...

this.signupForm = this.formBuilder.group({
  'name':             [null, Validators.required],
  'account':          this.formBuilder.group({
    'email':          [null, [Validators.required, ...]],
    'confirm_email':  [null, Validators.required],
  }, {validator: ValidationService.emailMatcher}),
  'password':         [null, [Validators.required,...]]
});

我想设置电子邮件字段的值。我试过这个,但没有运气:

this.signupForm.patchValue({'email': 'myvalue@asd.com'});

但是值是嵌套的,那么在这种情况下,sintax 是什么?我也试过了:

this.signupForm.patchValue({'account.email': 'myvalue@asd.com'});

这里也搜索过:

https://angular.io/docs/ts/latest/api/forms/index/FormGroup-class.html#!#patchValue-anchor

谢谢

【问题讨论】:

    标签: forms angular typescript components


    【解决方案1】:

    试试这个:

    this.signupForm.patchValue({account:{email: 'myvalue@asd.com'}});

    另一种解决方案是:

    (<FormGroup>this.signupForm.controls['account']).controls['email'].patchValue('myvalue@asd.com');
    

    抱歉,缩进不好。

    【讨论】:

    • 就是这样!非常感谢!我不知道为什么我没有意识到解决方案......现在看起来很明显!
    • 如何在上述解决方案中使用变量代替帐户。
    • 你可以使用这个语法 this.signupForm.patchValue({[variable]:{email: 'myvalue@asd.com'}});
    • 非常感谢。
    猜你喜欢
    • 2018-08-14
    • 1970-01-01
    • 2016-12-03
    • 2017-05-04
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    相关资源
    最近更新 更多