@@ -18,7 +18,7 @@ import {
18
18
tick ,
19
19
waitForAsync ,
20
20
} from '@angular/core/testing' ;
21
- import { FormControl , FormsModule , ReactiveFormsModule } from '@angular/forms' ;
21
+ import { FormControl , FormGroup , FormsModule , ReactiveFormsModule } from '@angular/forms' ;
22
22
import { By } from '@angular/platform-browser' ;
23
23
import { of } from 'rxjs' ;
24
24
import { MatSliderModule } from './module' ;
@@ -1314,6 +1314,25 @@ describe('MatSlider', () => {
1314
1314
} ) ) ;
1315
1315
} ) ;
1316
1316
1317
+ describe ( 'slider with form group' , ( ) => {
1318
+ it ( 'should reset to initial min-max value when form reset is done' , fakeAsync ( ( ) => {
1319
+ const fixture = createComponent ( SliderWithFormGroup ) ;
1320
+ fixture . detectChanges ( ) ;
1321
+ const sliderDebugElement = fixture . debugElement . query ( By . directive ( MatSlider ) ) ;
1322
+ const slider = sliderDebugElement . componentInstance ;
1323
+ const minInput = slider . _getInput ( _MatThumb . START ) as MatSliderRangeThumb ;
1324
+ const maxInput = slider . _getInput ( _MatThumb . END ) as MatSliderRangeThumb ;
1325
+ flush ( ) ;
1326
+
1327
+ expect ( minInput . value ) . toBe ( 0 ) ;
1328
+ expect ( maxInput . value ) . toBe ( 10 ) ;
1329
+ slideToValue ( slider , minInput , 20 ) ;
1330
+ fixture . componentInstance . fg . reset ( ) ;
1331
+ expect ( minInput . value ) . toBe ( 0 ) ;
1332
+ expect ( maxInput . value ) . toBe ( 10 ) ;
1333
+ } ) ) ;
1334
+ } ) ;
1335
+
1317
1336
describe ( 'slider as a custom form control' , ( ) => {
1318
1337
let fixture : ComponentFixture < SliderWithFormControl > ;
1319
1338
let slider : MatSlider ;
@@ -2024,6 +2043,28 @@ class RangeSliderWithTickMarks {
2024
2043
@ViewChild ( MatSlider ) slider : MatSlider ;
2025
2044
}
2026
2045
2046
+ @Component ( {
2047
+ template : `
2048
+ <div [formGroup]="fg" >
2049
+ <mat-slider [min]="MIN" [max]="MAX" >
2050
+ <input formControlName="min" matSliderStartThumb>
2051
+ <input formControlName="max" matSliderEndThumb>
2052
+ </mat-slider>
2053
+ <div>
2054
+ ` ,
2055
+ styles : SLIDER_STYLES ,
2056
+ standalone : false ,
2057
+ } )
2058
+ class SliderWithFormGroup {
2059
+ readonly MIN = 0 ;
2060
+ readonly MAX = 10 ;
2061
+
2062
+ readonly fg = new FormGroup ( {
2063
+ min : new FormControl < number | null > ( null ) ,
2064
+ max : new FormControl < number | null > ( null ) ,
2065
+ } ) ;
2066
+ }
2067
+
2027
2068
/** Clicks on the MatSlider at the coordinates corresponding to the given value. */
2028
2069
function setValueByClick (
2029
2070
slider : MatSlider ,
0 commit comments