Функция валидатора возвращает объектный литерал ошибок, если есть ошибка или ноль в противном случае.Ложность результата - то, как угловое знание определяет, является ли контроль действительным.Таким образом, вы можете предположить, что результат будет функционально эквивалентным, если вы используете .error
или !...valid
.
. Сказанное с использованием !...valid
(или, более подходящим образом .invalid
) является более определенным подходом, и есливы смотрите на примеры Angular , вот как они это делают.
Я смотрю так: кто знает в будущем, будет ли поведение, от которого вы зависите, всегда будеттак же?В будущем возможен законный случай, когда ошибки равны нулю, но элемент управления по-прежнему недействителен.Лучше всего использовать наиболее явный подход, когда это не требует дополнительных затрат.
РЕДАКТИРОВАТЬ
На самом деле посмотрите на источник AbstractControl
, потенциально ошибки могут быть пустымино элемент управления по-прежнему может быть недействительным в зависимости от реализации функции _anyControls()
:
get invalid(): boolean { return this.status === INVALID; }
/*...*/
private _calculateStatus(): string {
if (this._allControlsDisabled()) return DISABLED;
if (this.errors) return INVALID;
if (this._anyControlsHaveStatus(PENDING)) return PENDING;
/* if the condition below is true that means the control will be invalid
* but errors will be null. */
if (this._anyControlsHaveStatus(INVALID)) return INVALID;
return VALID;
}
При условии, что возможны условия, при которых errors
может быть нулевым, но состояние элемента управления по-прежнему будет invalid
, тогдаВы обязательно должны проверять invalid
, а не errors
.