@@ -42,6 +42,11 @@ export const MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken<MatSnackBarConfi
4242 } ,
4343) ;
4444
45+ export interface SnackBarTemplateContext < D > {
46+ $implicit ?: D | null ;
47+ snackBarRef ?: MatSnackBarRef < EmbeddedViewRef < SnackBarTemplateContext < D > > , D > ;
48+ }
49+
4550/**
4651 * Service to dispatch Material Design snack bar messages.
4752 */
@@ -108,10 +113,10 @@ export class MatSnackBar implements OnDestroy {
108113 * @param template Template to be instantiated.
109114 * @param config Extra configuration for the snack bar.
110115 */
111- openFromTemplate < C extends D , D > (
112- template : TemplateRef < C > ,
116+ openFromTemplate < D > (
117+ template : TemplateRef < SnackBarTemplateContext < D > > ,
113118 config ?: MatSnackBarConfig < D > ,
114- ) : MatSnackBarRef < EmbeddedViewRef < C > , D > {
119+ ) : MatSnackBarRef < EmbeddedViewRef < SnackBarTemplateContext < D > > , D > {
115120 return this . _attach ( template , config ) ;
116121 }
117122
@@ -192,27 +197,30 @@ export class MatSnackBar implements OnDestroy {
192197 content : ComponentType < T > ,
193198 userConfig ?: MatSnackBarConfig < D > ,
194199 ) : MatSnackBarRef < T , D > ;
195- private _attach < D , C extends D > (
196- content : TemplateRef < C > ,
200+ private _attach < D > (
201+ content : TemplateRef < SnackBarTemplateContext < D > > ,
197202 userConfig ?: MatSnackBarConfig < D > ,
198- ) : MatSnackBarRef < EmbeddedViewRef < C > , D > ;
199- private _attach < T , D , C extends D > (
200- content : ComponentType < T > | TemplateRef < C > ,
203+ ) : MatSnackBarRef < EmbeddedViewRef < SnackBarTemplateContext < D > > , D > ;
204+ private _attach < T , D > (
205+ content : ComponentType < T > | TemplateRef < SnackBarTemplateContext < D > > ,
201206 userConfig ?: MatSnackBarConfig < D > ,
202- ) : MatSnackBarRef < T | EmbeddedViewRef < C > , D > {
207+ ) : MatSnackBarRef < T | EmbeddedViewRef < SnackBarTemplateContext < D > > , D > {
203208 const config : MatSnackBarConfig < D > = {
204209 ...new MatSnackBarConfig ( ) ,
205- ...this . _defaultConfig ,
210+ ...( this . _defaultConfig as MatSnackBarConfig < D > ) ,
206211 ...userConfig ,
207212 } ;
208213 const overlayRef = this . _createOverlay ( config ) ;
209214 const container = this . _attachSnackBarContainer ( overlayRef , config ) ;
210- const snackBarRef = new MatSnackBarRef ( container , overlayRef ) ;
215+ const snackBarRef = new MatSnackBarRef < T | EmbeddedViewRef < SnackBarTemplateContext < D > > , D > (
216+ container ,
217+ overlayRef ,
218+ ) ;
211219
212220 if ( content instanceof TemplateRef ) {
213- const portal = new TemplatePortal < C > ( content , null ! , {
221+ const portal = new TemplatePortal < SnackBarTemplateContext < D > > ( content , null ! , {
214222 $implicit : config . data ,
215- snackBarRef,
223+ snackBarRef : snackBarRef as MatSnackBarRef < EmbeddedViewRef < SnackBarTemplateContext < D > > , D > ,
216224 } ) ;
217225
218226 snackBarRef . instance = container . attachTemplatePortal ( portal ) ;
0 commit comments