Skip to content

Commit c2e2744

Browse files
crisbetommalerba
authored andcommitted
fix(slider): unable to reset value by setting it back to undefined (#9768)
Fixes the slider value not being reset to zero if the consumer sets it to undefined. Fixes #9740.
1 parent 6bf2741 commit c2e2744

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

src/lib/slider/slider.spec.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
} from '@angular/cdk/keycodes';
1313
import {dispatchFakeEvent, dispatchKeyboardEvent, dispatchMouseEvent} from '@angular/cdk/testing';
1414
import {Component, DebugElement, ViewChild} from '@angular/core';
15-
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
15+
import {async, ComponentFixture, TestBed, fakeAsync, flush} from '@angular/core/testing';
1616
import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms';
1717
import {By, HAMMER_GESTURE_CONFIG} from '@angular/platform-browser';
1818
import {MatSlider, MatSliderModule} from './index';
@@ -1274,6 +1274,23 @@ describe('MatSlider with forms module', () => {
12741274

12751275
expect(testComponent.val).toBe(1);
12761276
});
1277+
1278+
it('should be able to reset a slider by setting the model back to undefined', fakeAsync(() => {
1279+
expect(testComponent.slider.value).toBe(0);
1280+
1281+
testComponent.val = 5;
1282+
fixture.detectChanges();
1283+
flush();
1284+
1285+
expect(testComponent.slider.value).toBe(5);
1286+
1287+
testComponent.val = undefined;
1288+
fixture.detectChanges();
1289+
flush();
1290+
1291+
expect(testComponent.slider.value).toBe(0);
1292+
}));
1293+
12771294
});
12781295

12791296
describe('slider as a custom form control', () => {
@@ -1464,7 +1481,8 @@ class SliderWithFormControl {
14641481
styles: [styles],
14651482
})
14661483
class SliderWithNgModel {
1467-
val = 0;
1484+
@ViewChild(MatSlider) slider: MatSlider;
1485+
val: number | undefined = 0;
14681486
}
14691487

14701488
@Component({

src/lib/slider/slider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ export class MatSlider extends _MatSliderMixinBase
238238
}
239239
set value(v: number | null) {
240240
if (v !== this._value) {
241-
this._value = coerceNumberProperty(v, this._value || 0);
241+
this._value = coerceNumberProperty(v);
242242
this._percent = this._calculatePercentage(this._value);
243243

244244
// Since this also modifies the percentage, we need to let the change detection know.

0 commit comments

Comments
 (0)