@@ -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' ;
@@ -1706,6 +1706,31 @@ describe('MatSlider', () => {
1706
1706
expect ( tickEls . inactive . length ) . toBe ( 100 ) ;
1707
1707
} ) ;
1708
1708
} ) ;
1709
+
1710
+ describe ( 'slider with form group' , ( ) => {
1711
+ let fixture : ComponentFixture < SliderWithFormGroup > ;
1712
+ let slider : MatSlider ;
1713
+ let minInput : MatSliderThumb ;
1714
+ let maxInput : MatSliderThumb ;
1715
+
1716
+ beforeEach ( waitForAsync ( ( ) => {
1717
+ fixture = createComponent ( SliderWithFormGroup ) ;
1718
+ fixture . detectChanges ( ) ;
1719
+ const sliderDebugElement = fixture . debugElement . query ( By . directive ( MatSlider ) ) ;
1720
+ slider = sliderDebugElement . componentInstance ;
1721
+ minInput = slider . _getInput ( _MatThumb . START ) as MatSliderRangeThumb ;
1722
+ maxInput = slider . _getInput ( _MatThumb . END ) as MatSliderRangeThumb ;
1723
+ } ) ) ;
1724
+
1725
+ it ( 'should reset to initial min-max value when form reset is done' , fakeAsync ( ( ) => {
1726
+ expect ( minInput . value ) . toBe ( 0 ) ;
1727
+ expect ( maxInput . value ) . toBe ( 10 ) ;
1728
+ slideToValue ( slider , minInput , 20 ) ;
1729
+ fixture . componentInstance . fg . reset ( ) ;
1730
+ expect ( minInput . value ) . toBe ( 0 ) ;
1731
+ expect ( maxInput . value ) . toBe ( 10 ) ;
1732
+ } ) ) ;
1733
+ } ) ;
1709
1734
} ) ;
1710
1735
1711
1736
const SLIDER_STYLES = [ '.mat-mdc-slider { width: 300px; }' ] ;
@@ -2024,6 +2049,28 @@ class RangeSliderWithTickMarks {
2024
2049
@ViewChild ( MatSlider ) slider : MatSlider ;
2025
2050
}
2026
2051
2052
+ @Component ( {
2053
+ template : `
2054
+ <div [formGroup]="fg" >
2055
+ <mat-slider [min]="MIN" [max]="MAX" >
2056
+ <input formControlName="min" matSliderStartThumb>
2057
+ <input formControlName="max" matSliderEndThumb>
2058
+ </mat-slider>
2059
+ <div>
2060
+ ` ,
2061
+ styles : SLIDER_STYLES ,
2062
+ standalone : false ,
2063
+ } )
2064
+ class SliderWithFormGroup {
2065
+ readonly MIN = 0 ;
2066
+ readonly MAX = 10 ;
2067
+
2068
+ readonly fg = new FormGroup ( {
2069
+ min : new FormControl < number | null > ( null ) ,
2070
+ max : new FormControl < number | null > ( null ) ,
2071
+ } ) ;
2072
+ }
2073
+
2027
2074
/** Clicks on the MatSlider at the coordinates corresponding to the given value. */
2028
2075
function setValueByClick (
2029
2076
slider : MatSlider ,
0 commit comments