fix(input): fix placeholder for number input with bad input. (#2362)

* fix(input): fix placeholder for number input with bad input.

* addressed comments

* add comment
This commit is contained in:
mmalerba
2017-01-12 13:24:06 -08:00
committed by tinayuangao
parent 080f570958
commit 52aa71584f
+12 -1
View File
@@ -152,7 +152,14 @@ export class MdInputDirective {
*/
@Output() _placeholderChange = new EventEmitter<string>();
get empty() { return (this.value == null || this.value === '') && !this._isNeverEmpty(); }
get empty() {
return !this._isNeverEmpty() &&
(this.value == null || this.value === '') &&
// Check if the input contains bad input. If so, we know that it only appears empty because
// the value failed to parse. From the user's perspective it is not empty.
// TODO(mmalerba): Add e2e test for bad input case.
!this._isBadInput();
}
private get _uid() { return this._cachedUid = this._cachedUid || `md-input-${nextUniqueId++}`; }
@@ -199,6 +206,10 @@ export class MdInputDirective {
private _isNeverEmpty() { return this._neverEmptyInputTypes.indexOf(this._type) !== -1; }
private _isBadInput() {
return (this._elementRef.nativeElement as HTMLInputElement).validity.badInput;
}
/** Determines if the component host is a textarea. If not recognizable it returns false. */
private _isTextarea() {
let nativeElement = this._elementRef.nativeElement;