@@ -55,20 +55,23 @@ export class CdkStep {
5555 /** Template for step content. */
5656 @ViewChild ( TemplateRef ) content : TemplateRef < any > ;
5757
58- /** Whether step is disabled or not. */
58+ // /** Whether step is disabled or not. */
59+ // @Input ()
60+ // get disabled() { return this._disabled; }
61+ // set disabled(value: any) {
62+ // this._disabled = coerceBooleanProperty(value);
63+ // }
64+ // private _disabled = false;
65+
5966 @Input ( )
60- get disabled ( ) { return this . _disabled ; }
61- set disabled ( value : any ) {
62- this . _disabled = coerceBooleanProperty ( value ) ;
67+ get valid ( ) { return this . _valid ; }
68+ set valid ( value : any ) {
69+ this . _valid = coerceBooleanProperty ( value ) ;
6370 }
64- private _disabled = false ;
71+ private _valid = true ;
6572
6673 /** Whether user has seen the expanded step content or not . */
67- get interacted ( ) { return this . _interacted ; }
68- set interacted ( value : boolean ) {
69- this . _interacted = value ;
70- }
71- private _interacted = false ;
74+ interacted = false ;
7275
7376 /** Label of the step. */
7477 @Input ( )
@@ -101,7 +104,10 @@ export class CdkStepper {
101104 get selectedIndex ( ) { return this . _selectedIndex ; }
102105 set selectedIndex ( index : number ) {
103106 this . _steps . toArray ( ) [ this . _selectedIndex ] . interacted = true ;
104- if ( this . _selectedIndex != index && ! this . _steps . toArray ( ) [ index ] . disabled ) {
107+ for ( let i = 0 ; i < index ; i ++ ) {
108+ if ( ! this . _steps . toArray ( ) [ i ] . valid ) { return ; }
109+ }
110+ if ( this . _selectedIndex != index ) {
105111 this . _emitStepperSelectionEvent ( index ) ;
106112 this . _focusStep ( this . _selectedIndex ) ;
107113 }
0 commit comments