Try this, it should work
this.formGroup.controls["firstName"].setValidators(Validators.required);
For multiple validators
this.formGroup.controls["firstName"].setValidators([Validators.required, Validators.minLength(2)]);
But doing so will override any validators that are provided during initialization
EDIT :
To reflect the form controls with newly added Validators
immediately, we have to call this.formGroup.controls["firstName"].updateValueAndValidity();
after setting validators dynamically.
this.formGroup.controls["firstName"].setValidators(Validators.required);
this.formGroup.controls["firstName"].updateValueAndValidity();
DEMO for the same
* NOTE *
updateValueAndValidity() will trigger a valueChanges event even if the value didn't really change (potentially resulting in an infinite loop, if you're calling it from within a valueChanges subscription). You can prevent that by using the optional parameter object: { onlySelf: true, emitEvent: false}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…