Вы должны использовать пользовательский компонент снэк-бара, чтобы показать значок.К счастью, это должно быть похоже на то, как вы определяете диалоговое окно для отображения контента, просто это закусочная вместо диалога.
Можно передавать данные в закусочную, так же, как и передачу данных вдиалоговое окно.
Обратите внимание, что при объявлении закусочной вы также должны импортировать ее в свойстве entryComponents
в объявлении NgModule
.
Вот пример:
icon-snack-bar.component.ts
import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';
// ...
@Component({
selector: '...',
template: `<mat-icon>{{ data?.icon }}</mat-icon> <span>{{ data?.message }}</span>`
// Most likely you have to add styles in order to position the icon, although I haven't tested it yet
export class IconSnackBarComponent {
constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }
}
my-component.component.ts
import { IconSnackBarComponent } from './icon-snack-bar/icon-snack-bar.component';
import { MatSnackBar } from '@angular/material/snack-bar';
// ...
export class MyComponent {
constructor(private snackBar: MatSnackBar) { }
openCustomSnackBar() {
this.snackBar.openFromComponent(IconSnackBarComponent, {
data: {
message: 'Hello, snackbar!',
icon: 'info'
}
});
}
}
app.module.ts
import { NgModule } from '@angular/core';
import { IconSnackBarComponent } from './icon-snack-bar/icon-snack-bar.component';
// ...
@NgModule({
declarations: [
// ...
IconSnackBarComponent
],
entryComponents: [
IconSnackBarComponent
]
})
export class AppModule { }
Это также частично рассматривается в документах здесь .