[ANGULAR] 사용자 정의 구성 요소 (FormControl이 아닌)에 대한 유효성 검사기를 크레이트 할 수 있습니까?
ANGULAR사용자 정의 구성 요소 (FormControl이 아닌)에 대한 유효성 검사기를 크레이트 할 수 있습니까?
해결법
-
1.Karina, 모든 구성 요소의 유효성을 검사 할 수 없습니다. 사용자 정의 양식 컨트롤을 사용하는 특별한 구성 요소의 유효성을 검사 할 수 있습니다. 사용자 정의 양식 컨트롤에서 사용자 정의 양식 컨트롤의 유효성 검사기를 만들 수 있습니다. 그러나 이것은 ControlValueAccessor를 구현해야합니다.
Karina, 모든 구성 요소의 유효성을 검사 할 수 없습니다. 사용자 정의 양식 컨트롤을 사용하는 특별한 구성 요소의 유효성을 검사 할 수 있습니다. 사용자 정의 양식 컨트롤에서 사용자 정의 양식 컨트롤의 유효성 검사기를 만들 수 있습니다. 그러나 이것은 ControlValueAccessor를 구현해야합니다.
물론 구성 요소와 예를 들어도 사용할 수 있습니다. 입력 호출로 변경 사항으로 변경되지만 실제로 유효성 검사가 아닙니다.
사용자 정의 양식 컨트롤에 제어 내부의 유효성 검사기가있는 경우 사용자 정의 양식 컨트롤이 제공자 ng_validators로 추가되어야하며 같을 것입니다.
@Component({ selector: 'app-custom-form-control', template: `... `, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CustomFormControl), multi: true }, { provide: NG_VALIDATORS, useExisting: forwardRef(() => CustomFormControl), multi: true, } ] }) export class CustomFormControl implements ControlValueAccessor { onChange; onTouched; constructor(el:ElementRef){} writeValue(value: any[]|any): void { ...receive a value, make something to show it... } registerOnChange(fn: any): void { this.onChange = fn; } registerOnTouched(fn: any): void { this.onTouched = fn; } setDisabledState(isDisabled: boolean): void { } //A function that, when some happens, send a change setValue(value: any) { this.onChange(...) } focusOut() { this.onTouched() } validate(control: AbstractControl): ValidationErrors | null{ ..your logic here.. return null } }
from https://stackoverflow.com/questions/54645878/is-it-possible-to-crate-a-validator-for-a-custom-component-not-for-a-formcontro by cc-by-sa and MIT license
'ANGULAR' 카테고리의 다른 글
[ANGULAR] Angular의 SetInterval을 포함한 비동기 코드를 테스트합니다 (0) | 2020.11.28 |
---|---|
[ANGULAR] rxjs - keyup 이벤트가있는 distinctIntilchanged () (0) | 2020.11.28 |
[ANGULAR] JSON을 Angular 2 객체로 파싱합니다 (0) | 2020.11.28 |
[ANGULAR] "declare var"가있는 테스트 구성 요소 (0) | 2020.11.28 |
[ANGULAR] Angular 2 RXJS 제한 시간 콜백 (0) | 2020.11.28 |