diff --git a/nativescript-angular/forms/value-accessors/base-value-accessor.ts b/nativescript-angular/forms/value-accessors/base-value-accessor.ts index 25ac8aa7a..5f46ca98a 100644 --- a/nativescript-angular/forms/value-accessors/base-value-accessor.ts +++ b/nativescript-angular/forms/value-accessors/base-value-accessor.ts @@ -1,5 +1,7 @@ import { ControlValueAccessor } from "@angular/forms"; -import { View } from "tns-core-modules/ui/core/view"; +import { View, unsetValue } from "tns-core-modules/ui/core/view"; + +import { isBlank } from "../../lang-facade"; export class BaseValueAccessor implements ControlValueAccessor { private pendingChangeNotification: any = 0; @@ -28,5 +30,9 @@ export class BaseValueAccessor implements ControlValueAccess this.view.isEnabled = !isDisabled; } - writeValue(_: any) { } + writeValue(_: any) {} + + protected normalizeValue(value: any): any { + return isBlank(value) ? unsetValue : value; + } } diff --git a/nativescript-angular/forms/value-accessors/checked-value-accessor.ts b/nativescript-angular/forms/value-accessors/checked-value-accessor.ts index af1a22289..6053ee700 100644 --- a/nativescript-angular/forms/value-accessors/checked-value-accessor.ts +++ b/nativescript-angular/forms/value-accessors/checked-value-accessor.ts @@ -34,6 +34,7 @@ export class CheckedValueAccessor extends BaseValueAccessor { // tslint: } writeValue(value: any): void { - this.view.checked = value; + const normalized = super.normalizeValue(value); + this.view.checked = normalized; } } diff --git a/nativescript-angular/forms/value-accessors/date-value-accessor.ts b/nativescript-angular/forms/value-accessors/date-value-accessor.ts index 045df2f01..c7f8419a9 100644 --- a/nativescript-angular/forms/value-accessors/date-value-accessor.ts +++ b/nativescript-angular/forms/value-accessors/date-value-accessor.ts @@ -34,6 +34,7 @@ export class DateValueAccessor extends BaseValueAccessor { // tslint } writeValue(value: any): void { - this.view.date = value; + const normalized = super.normalizeValue(value); + this.view.date = normalized; } } diff --git a/nativescript-angular/forms/value-accessors/number-value-accessor.ts b/nativescript-angular/forms/value-accessors/number-value-accessor.ts index 32146b62b..32275d4ea 100644 --- a/nativescript-angular/forms/value-accessors/number-value-accessor.ts +++ b/nativescript-angular/forms/value-accessors/number-value-accessor.ts @@ -33,6 +33,7 @@ export class NumberValueAccessor extends BaseValueAccessor { // tslint:d } writeValue(value: any): void { - this.view.value = value; + const normalized = super.normalizeValue(value); + this.view.value = normalized; } } diff --git a/nativescript-angular/forms/value-accessors/selectedIndex-value-accessor.ts b/nativescript-angular/forms/value-accessors/selectedIndex-value-accessor.ts index 834aa8c88..2c9a7ddf1 100644 --- a/nativescript-angular/forms/value-accessors/selectedIndex-value-accessor.ts +++ b/nativescript-angular/forms/value-accessors/selectedIndex-value-accessor.ts @@ -50,7 +50,8 @@ export class SelectedIndexValueAccessor extends BaseValueAccessor { // tslint:d } writeValue(value: any): void { - this.view.text = value; + const normalized = super.normalizeValue(value); + this.view.text = normalized; } } diff --git a/nativescript-angular/forms/value-accessors/time-value-accessor.ts b/nativescript-angular/forms/value-accessors/time-value-accessor.ts index d62b170e7..6be6851ee 100644 --- a/nativescript-angular/forms/value-accessors/time-value-accessor.ts +++ b/nativescript-angular/forms/value-accessors/time-value-accessor.ts @@ -36,6 +36,7 @@ export class TimeValueAccessor extends BaseValueAccessor { // tslint } writeValue(value: any): void { - this.view.time = value; + const normalized = super.normalizeValue(value); + this.view.time = normalized; } }