SIGN IN SIGN UP
angular / angular.js UNCLAIMED

AngularJS - HTML enhanced for web apps!

0 0 0 JavaScript

fix(ngModel): treat synchronous validators as boolean always

Change synchronous validators to convert the return to boolean value.
Prevent unexpected behavior when returning `undefined`.

Closes #14734
Closes #15208

BREAKING CHANGE: Previously, only a literal `false` return would resolve as the
synchronous validator failing. Now, all traditionally false JavaScript values
are treated as failing the validator, as one would naturally expect.

Specifically, the values `0` (the number zero), `null`, `NaN` and `''` (the
empty string) used to considered valid (passing) and they are now considered
invalid (failing). The value `undefined` was treated similarly to a pending
asynchronous validator, causing the validation to be pending. `undefined` is
also now considered invalid.

To migrate, make sure your synchronous validators are returning either a
literal `true` or a literal `false` value. For most code, we expect this to
already be the case. Only a very small subset of projects will be affected.

Namely, anyone using `undefined` or any falsy value as a return will now see
their validation failing, whereas previously falsy values other than `undefined`
would have been seen as passing and `undefined` would have been seen as pending.
B
BobChao87 committed
7bc71adc63bb6bb609b44dd2d3ea8fb0cd3f300b
Parent: e8aebb3
Committed by Peter Bacon Darwin <pete@bacondarwin.com> on 10/5/2016, 7:42:02 PM