4
두 개의 컨트롤에 값이 있는지 확인하는 지시문을 각도로 작성했습니다. 그중 하나가 채워지면 다른 하나는 채워 져야하므로 비어 있거나 채워져 있어야합니다. 지금까지 문제가 없습니다.각도 - 버튼을 누를 때 지시문의 입력이 업데이트되지 않음
이 지시문은 기본적으로 사용하지 않도록 설정해야합니다. 버튼을 누른 후에 만 활성화해야합니다. 이를 제어하기 위해, 나는 변수를 결합하는 지시어에 @Input가 그 '사실'에있는 버튼 세트 :
import { Validator, FormControl, NG_VALIDATORS, FormGroup, NgForm } from '@angular/forms';
import { Directive, forwardRef, Input, ElementRef } from '@angular/core';
@Directive({
selector: '[correquired][ngModel]',
providers: [
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => CorrequiredDirective), multi: true }
]
})
export class CorrequiredDirective implements Validator {
@Input() other: FormControl;
@Input() enabled: boolean;
validate(c: FormControl): { [index: string]: any; } {
if (!this.enabled) { return null; }
if (this.other != null && this.other.value != null && this.other.value.trim && this.other.value.trim() === '') {
this.other.setValue(null);
}
if (c.value != null && c.value.trim && c.value.trim() === '') {
c.setValue(null);
}
if (c.value != null && c.value != undefined) {
this.other.markAsTouched();
}
if (this.other != null && c.value == null && this.other.value != null) {
return { 'correquired': { valid: false } };
}
}
}
그리고, 구성 요소, 내가 컨트롤을 설정이 방법 :
<input type="text" correquired [other]="form3.controls['delivered_quantity']" [enabled]="publishing" ...
"publishing"변수를 true로 설정하는 단추에서도 양식을 전송합니다. 문제는이 버튼을 누를 때 "publishing"값을 변경하기 전에 지시문이 실행되고 그 이후가 아니므로 지시어의 "enabled"변수는 항상 false입니다. 버튼을 눌렀을 때 어떻게 업데이트 할 수 있습니까?
미리 감사드립니다.