@@ -104,6 +104,9 @@ export class MdChipList implements MdFormFieldControl<any>, ControlValueAccessor
104104 /** Subscription to focus changes in the chips. */
105105 private _chipFocusSubscription : Subscription | null ;
106106
107+ /** Subscription to blur changes in the chips. */
108+ private _chipBlurSubscription : Subscription | null ;
109+
107110 /** Subscription to selection changes in chips. */
108111 private _chipSelectionSubscription : Subscription | null ;
109112
@@ -277,6 +280,11 @@ export class MdChipList implements MdFormFieldControl<any>, ControlValueAccessor
277280 return merge ( ...this . chips . map ( chip => chip . _onFocus ) ) ;
278281 }
279282
283+ /** Combined stream of all of the child chips' blur change events. */
284+ get chipBlurChanges ( ) : Observable < MdChipEvent > {
285+ return merge ( ...this . chips . map ( chip => chip . _onBlur ) ) ;
286+ }
287+
280288 /** Combined stream of all of the child chips' remove change events. */
281289 get chipRemoveChanges ( ) : Observable < MdChipEvent > {
282290 return merge ( ...this . chips . map ( chip => chip . destroy ) ) ;
@@ -649,6 +657,11 @@ export class MdChipList implements MdFormFieldControl<any>, ControlValueAccessor
649657 this . _chipFocusSubscription = null ;
650658 }
651659
660+ if ( this . _chipBlurSubscription ) {
661+ this . _chipBlurSubscription . unsubscribe ( ) ;
662+ this . _chipBlurSubscription = null ;
663+ }
664+
652665 if ( this . _chipSelectionSubscription ) {
653666 this . _chipSelectionSubscription . unsubscribe ( ) ;
654667 this . _chipSelectionSubscription = null ;
@@ -687,6 +700,11 @@ export class MdChipList implements MdFormFieldControl<any>, ControlValueAccessor
687700 }
688701 this . stateChanges . next ( ) ;
689702 } ) ;
703+
704+ this . _chipBlurSubscription = this . chipBlurChanges . subscribe ( _ => {
705+ this . _blur ( ) ;
706+ this . stateChanges . next ( ) ;
707+ } ) ;
690708 }
691709
692710 private _listenToChipsRemoved ( ) : void {
0 commit comments