Решение yatharth будет работать.
Однако, если вы хотите обеспечить безопасность своих компонентов в будущем, вам следует воспользоваться услугой.С помощью службы вы можете отклонить свою снэк-панель из любой точки приложения, а не только из компонента сообщения снэк-бара, как в его подходе.
Создайте наблюдаемый поток и подпишитесь на него в своем компоненте снэк-бара.Он будет просто передавать логическое значение (истина или ложь), и вы можете переключать компонент закусочной с этим значением каждый раз, когда в потоке будет выдано новое значение.
Простой пример:
@Injectable()
export class SnackbarService {
status: BehaviorSubject<boolean> = new BehaviorSubject(false);
status$: Observable<boolean> = this.status.asObservable();
}
@Component({
selector: 'app-snackbar-message',
templateUrl: './snackbar-message.html'
})
export class SnackbarMessage {
open: boolean = false;
constructor(public snackbarService: SnackbarService) {
snackbarService.status$.subscribe((open: boolean) => this.open = open);
}
}
Теперь в любом месте вашего приложения все, что вам нужно сделать, это открыть закусочную:
snackbarService.status.next(true);
Или это, чтобы закрыть закусочную:
snackbarService.status.next(false);
И есливы хотите получить больше случаев, чем просто открывать / закрывать, вы можете использовать перечисление с различными значениями:
export enum SnackbarStatus {
Open,
Closed,
SomethingElse
}
Передать перечисление в вашем наблюдаемом потоке вместо логического:
@Injectable()
export class SnackbarService {
status: BehaviorSubject<SnackbarStatus> = new BehaviorSubject(SnackbarStatus.Closed);
status$: Observable<SnackbarStatus> = this.status.asObservable();
}