각도 2에 사용자 지정 폼 유효성 검사 메서드를 작성하려고합니다. 프로젝트를 실행할 때 다음 오류가 발생하는 문제가 있습니다.각도 2 + typescript 컴파일 타임에 속성을 찾을 수 없습니다.
Property 'controls' does not exist on type 'AbstractControl'.
그러나 무시하고 내 응용 프로그램을 계속 사용하면 유효성 검사 기능이 계획대로 작동한다는 것을 알 수 있습니다.
누구든지이 문제에 직면 해 있습니까? 왜이 오류가 발생합니까? 나는 그 자체가 아니라 typescript와 관련이있다. (필자는 typescript 2.0.3을 사용하고있다.)
수입 :
import {Injectable} from '@angular/core';
import {RegexService} from "./regex.service";
import {FormControl, ValidatorFn} from "@angular/forms";
사용자 지정 유효성 검사 기능 : 미리
requireGroupMinAmount(minPossibleAmount): ValidatorFn {
return (control: FormControl): string[]=> {
let requireCounter = 0;
if (!control)
return null;
controlsLoop:for (let formOptionKey in control.controls) {
for (let formOptionValue in control.controls[formOptionKey].controls) {
if (control.controls[formOptionKey].controls[formOptionValue].value)
requireCounter++;
if (requireCounter >= minPossibleAmount)
break controlsLoop;
}
}
return requireCounter >= minPossibleAmount
? null
: ["Please fill at least " + minPossibleAmount + " fields"];
}
}
감사
이 내 코드입니다.
내가 있어야하는데 ... 제어하지 혼란 스러워요은 형식의 'FormControl'? 이것은 내가 정의한 타입입니다. 어쨌든, 당신은 'FormArray'와 'FormGroup'둘 다로 if 문을 추가하려했지만 여전히 컴파일시에이 오류가 발생합니다 .. –
FormControl은 결코 FormArray가 될 수 없습니다. 오직 .. 만약 당신이 AbstractControl로 작업한다면 .. ** sub ** type FormArray인지 확인할 수 있습니다. 그래서 FormControl ... 컨트롤에 실제로 자식이있는 경우에는 작동하지 마십시오. 자식 컨트롤이있는 경우 FormArray 또는 FormGroup입니다. 대답의 체크 결과, 추상 컨트롤 ... * (Validator에 오는 값이어야 함) *을 확인하는 방법이 표시됩니다. * 예상 하위 유형입니다. –
Ok. 그 점이 더 명확합니다.하지만 여전히 유형을 변경하더라도 formControl에서 formGroup으로 변경하고 if 문을 추가하면 같은 오류가 발생합니다. 거의 컴파일러가 무시할 경우 .. –