Давайте рассмотрим оба случая, о которых вы упомянули.
1.При использовании HTML ниже, проверка всегда показывает true
Я пытался воссоздать проблему в stackblitzно это всегда ложно в отличие от того, что вы сказали.В любом случае проверка myForm.controls['contact_no'].hasError(pattern)
возвращает ложь, поскольку hasError()
означает , ожидая строку в качестве параметра, , но шаблон здесь не определен.
Используйте это, чтобы проверить, есть ли в элементе управления формы ошибки проверки шаблона.
*ngIf="((myForm.controls['contact_no'].touched)&& myForm.controls['contact_no'].hasError('pattern')))"
2.При использовании HTML ниже, проверка всегда показывает false
myForm.controls['contact_no'].errors
будет нулевым, если в элементе управления формы нет ошибок проверки,Поэтому при проверке myForm.controls['contact_no'].errors.pattern
в шаблоне будет выдано сообщение об ошибке и возвращено неопределенное значение.Используйте безопасный оператор навигации для защиты от ошибки отображения представления, если myForm.controls ['contact_no']. Errors имеет значение null.
Например:
*ngIf="((myForm.controls['contact_no'].touched) && (myForm.controls['contact_no'].errors?.pattern)"
Я сделал stackblitz с вышеупомянутым исправлением.Проверьте ссылку, чтобы увидеть рабочее демо.