Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit cd99afc

Browse files
committedJun 14, 2017
fix(forms): default to unsetValue for value accessors
1 parent e09bb29 commit cd99afc

File tree

7 files changed

+21
-9
lines changed

7 files changed

+21
-9
lines changed
 

‎nativescript-angular/value-accessors/base-value-accessor.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { ControlValueAccessor } from "@angular/forms";
2-
import { View } from "tns-core-modules/ui/core/view";
2+
import { View, unsetValue } from "tns-core-modules/ui/core/view";
3+
4+
import { isBlank } from "../lang-facade";
35

46
export class BaseValueAccessor<TView extends View> implements ControlValueAccessor {
57
private pendingChangeNotification: number = 0;
@@ -28,5 +30,9 @@ export class BaseValueAccessor<TView extends View> implements ControlValueAccess
2830
this.view.isEnabled = !isDisabled;
2931
}
3032

31-
writeValue(_: any) { }
33+
writeValue(_: any) {}
34+
35+
protected normalizeValue(value: any): any {
36+
return isBlank(value) ? unsetValue : value;
37+
}
3238
}

‎nativescript-angular/value-accessors/checked-value-accessor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export class CheckedValueAccessor extends BaseValueAccessor<Switch> { // tslint:
3434
}
3535

3636
writeValue(value: any): void {
37-
this.view.checked = value;
37+
const normalized = super.normalizeValue(value);
38+
this.view.checked = normalized;
3839
}
3940
}

‎nativescript-angular/value-accessors/date-value-accessor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export class DateValueAccessor extends BaseValueAccessor<DatePicker> { // tslint
3535
}
3636

3737
writeValue(value: any): void {
38-
this.view.date = value;
38+
const normalized = super.normalizeValue(value);
39+
this.view.date = normalized;
3940
}
4041
}

‎nativescript-angular/value-accessors/number-value-accessor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export class NumberValueAccessor extends BaseValueAccessor<Slider> { // tslint:d
3434
}
3535

3636
writeValue(value: any): void {
37-
this.view.value = value;
37+
const normalized = super.normalizeValue(value);
38+
this.view.value = normalized;
3839
}
3940
}

‎nativescript-angular/value-accessors/selectedIndex-value-accessor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ export class SelectedIndexValueAccessor extends BaseValueAccessor<SelectableView
5151
private viewInitialized: boolean;
5252

5353
writeValue(value: any): void {
54-
this.value = value;
54+
const normalized = super.normalizeValue(value);
55+
this.value = normalized;
5556

5657
if (this.viewInitialized) {
5758
this.view.selectedIndex = this.value;

‎nativescript-angular/value-accessors/text-value-accessor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export class TextValueAccessor extends BaseValueAccessor<TextView> { // tslint:d
4848
}
4949

5050
writeValue(value: any): void {
51-
this.view.text = value;
51+
const normalized = super.normalizeValue(value);
52+
this.view.text = normalized;
5253
}
5354
}

‎nativescript-angular/value-accessors/time-value-accessor.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const TIME_VALUE_ACCESSOR = {
2323
"TimePicker[ngModel],TimePicker[formControlName]," +
2424
"timepicker[ngModel],timepicker[formControlName]," +
2525
"timePicker[ngModel],timePicker[formControlName]," +
26-
"time-picker[ngModel], time-picker[formControlName]",
26+
"time-picker[ngModel],time-picker[formControlName]",
2727
providers: [TIME_VALUE_ACCESSOR],
2828
host: {
2929
"(touch)": "onTouched()",
@@ -36,6 +36,7 @@ export class TimeValueAccessor extends BaseValueAccessor<TimePicker> { // tslint
3636
}
3737

3838
writeValue(value: any): void {
39-
this.view.time = value;
39+
const normalized = super.normalizeValue(value);
40+
this.view.time = normalized;
4041
}
4142
}

0 commit comments

Comments
 (0)
Please sign in to comment.