在因在Angular中显示网络状态而将其解雇后,再次显示snackbar



我正在使用snackbar:离线显示网络状态

showSnackbar(message: string, duration?: number, dismissTitle?: string): void {
this.snackBarRef = this.snackBar.open(message, dismissTitle, {
duration: duration
});
}
hideSnackbar(): void {
this.snackBarRef.dismiss();
}
handleNetwork() {
fromEvent(window, 'offline').subscribe(event => {
this.showSnackbar('No Internet', null, 'Dismiss');
//After Dismiss Snack-bar
this.snackBarRef.afterDismissed().subscribe(() => {
this.handleNetwork();
});
});
fromEvent(window, 'online').subscribe(event => {
this.hideSnackbar();
});
}

在每次取消小吃条时,我都想再次显示小吃条,直到网络状态变为在线。在snackbar关闭后,我再次调用handleNetwork((,但它不起作用。如果有人知道怎么做,请告诉我。感谢

可以这样做:

isOffline = false;
showSnackbar(message: string, duration?: number, dismissTitle?: string): void {
this.snackBarRef = this.snackBar.open(message, dismissTitle, {
duration: duration
});
}
hideSnackbar(): void {
this.snackBarRef.dismiss();
}
handleNetwork() {
fromEvent(window, 'offline').subscribe(event => {
this.isOffline = true;
this.showStatus();
});
fromEvent(window, 'online').subscribe(event => {
this.isOffline = false;
this.hideSnackbar();
});
}
showStatus() {
this.showSnackbar('No Internet', null, 'Reconnect');
this.snackBarRef.afterDismissed().subscribe(() => {
if (this.isOffline === true) {
this.showStatus();
}
});
}

最新更新