privatestatic readonly errorMessages = { 'required': () =>'This field is required', 'minlength': (params) =>'The min number of characters is ' + params.requiredLength, 'maxlength': (params) =>'The max allowed number of characters is ' + params.requiredLength, 'pattern': (params) =>'The required pattern is: ' + params.requiredPattern, 'custom': (params) => params.message };
validate(c: FormControl): ValidationErrors { const isValidPhoneNumber = /^\d{3,3}-\d{3,3}-\d{3,3}$/.test(c.value); const message = { 'telephoneNumber': { 'message': 'The phone number must be valid (XXX-XXX-XXX, where X is a digit)' } }; return isValidPhoneNumber ? null : message; } }
위 Validator를 적용하려면 앞서 예제와 같이 <input> tag에 validator의 selector인 telephoneNumber를 추가해주면 적용이 된다.
server validatoin
위의 예제에서 progrmatically 에러를 추가하고 싶을때(서버단에서 에러가 났을때) 이렇게 하면 된다.
우선 Form 변수를 @ViewChild로 매핑 시켜 주고, FormControl의 setErrors함수를 통해서 custom ValidationError를 Set할 수 있다.