Validtors
FormControl 개체를 업데이트하는 방법이 있습니까? 내가 FormGroup
하나의 입력 필드를 선택 필드의 값을 변경하면 내 FormGroup에서 유효성 검사기를 변경하려면 다른 FormControl 원하는. 여기 각도 2 : ValueChanges 뒤에 FormControl 유효성 검사기 업데이트
subscribeToFormChanges()
방법 :
private appIdRegexes = {
ios: /^[a-zA-Z][a-zA-Z0-9]*(\.[a-zA-Z0-9\-]+){2,}$/,
android: /^([a-zA-Z])[a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9\-]*){2,}$/,
any: /^any$/
};
private subscribeToFormChanges(): void {
const myFormValueChanges$ = this.appsForm.valueChanges;
myFormValueChanges$.subscribe(x => {
const platform = this.appsForm.controls['platform'].value;
const appId = this.appsForm.controls['appId'].value;
if (this.appIdRegexes[platform]) {
this.appsForm.controls['appId'] = new FormControl(appId, Validators.pattern(this.appIdRegexes[platform].source));
}
});
}
을 그리고 여기에 HTML 템플릿입니다 :
<div class="row" [formGroup]="appsForm">
<div class="form-group col-xs-6">
<label>Platform</label>
<select id="licensePlatform" class="form-control"
formControlName="platform">
<option *ngFor="let platform of licensePlatforms" [value]="platform">
{{platform}}
</option>
</select>
<small [hidden]="appsForm.controls.platform.valid">
Platform is required
</small>
</div>
<div class="form-goup col-xs-6">
<label>App ID</label>
<input type="text" class="form-control" formControlName="appId">
<small [hidden]="appsForm.controls.appId.valid">
Please use the right ID format
</small>
</div>
</div>
여기에 표시된 것처럼이 subscribeToFormChanges()
방법을 구현하고있어, appsForm.controls.appId.value
하지 않는 입력 필드에 쓸 때 더 이상 업데이트되지 않습니다. 초기 값은 업데이트 중입니다.
를 사용하여 패치 값 : 여기
내 솔루션입니다 ({controlTobeUpdated : 값}); https://angular.io/docs/ts/latest/api/forms/index/FormGroup-class.html#!#patchValue-anchor – Manish@ user32하지만 patchValue()를 사용하면 값을 업데이트 만 할 수 있습니다. 검사기? –
오른쪽. patchValue()를 사용하면 값을 업데이트 할 수 있지만 일단 값이 업데이트되면 유효성 검사기가 해고됩니다. – Manish