Измените панель Class с SnackBar в компоненте Snackbar - PullRequest
1 голос
/ 03 июля 2019

Я использую Material SnackBar для отображения сообщений и имею дополнительный компонент для SnackBar. В этом компоненте я хочу динамически изменять значение panelClass в зависимости от данных / сообщения и не хочу каждый раз в методе openFromComponent передавать параметр panelClass.

Есть ли способ сделать это? Я не мог найти ничего в документации. В следующем коде вы можете увидеть мой SnackBar Component TS.

export class SnackbarComponent implements OnInit {
  constructor(public snackBarRef: MatSnackBarRef<SnackbarComponent>,
              @Inject(MAT_SNACK_BAR_DATA) public data: any,
              @Inject(MAT_SNACK_BAR_DEFAULT_OPTIONS) public options: any) { }
}

Я использую свой компонент SnackBar с:

this._snackBar.openFromComponent(FewoSysSnackbarComponent, {
          data: {type: 'success/warn/info/error', text: 'MESSAGE'}
        });

1 Ответ

0 голосов
/ 03 июля 2019

Я нашел решение и внедрил сервис, который использует компонент SnackBar, вот мой код:

import { Injectable } from '@angular/core';
import {MatSnackBar} from '@angular/material';
import {SnackbarComponent} from '../module/shared/snackbar/snackbar.component';

@Injectable({
  providedIn: 'root'
})
export class SnackBarService {

  constructor(public snackBar: MatSnackBar) {}

  show(message: string, type?: string, duration?: any) {
    this.snackBar.openFromComponent(SnackbarComponent, {
      data: {type: type ? type : 'info', text: message},
      panelClass: type ? type : 'info',
      duration: duration ? duration : 0,
      horizontalPosition: 'right'
    });
  }
}

При duration = 0 закусочная не исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...