'How can I set duration of a snack-bar in angular2 (material2)
This example stays forever on the screen:
import {Component, ViewContainerRef} from '@angular/core';
import {MdSnackBar, MdSnackBarConfig} from '@angular/material';
@Component({
moduleId: module.id,
selector: 'snack-bar-demo',
templateUrl: 'snack-bar-demo.html',
})
export class SnackBarDemo {
message: string = 'Snack Bar opened.';
actionButtonLabel: string = 'Retry';
action: boolean = false;
constructor(
public snackBar: MdSnackBar,
public viewContainerRef: ViewContainerRef) { }
open() {
let config = new MdSnackBarConfig(this.viewContainerRef);
this.snackBar.open(this.message, this.action && this.actionButtonLabel, config);
}
}
How can I make it disappear after 2 seconds (set duration/timeout somehow)?
Solution 1:[1]
this should work
open(msg,t=2000) {
let config = new MdSnackBarConfig(this.viewContainerRef);
let simpleSnackBarRef = this.snackBar.open(msg, 'ok, gotcha', config);
setTimeout(simpleSnackBarRef.dismiss.bind(simpleSnackBarRef), t);
}
Solution 2:[2]
With angular material 2.0.0-alpha.11, You can now add timeout to snackbar.
open() {
let config = new MdSnackBarConfig();
config.duration = 10;
this.snackBar.open("Message", "Action Label", config);
}
Solution 3:[3]
this._snackBar.open('Your Text','',
{
duration: 2000
});
Solution 4:[4]
The duration can be pass via the optional configuration object:
this.snackBar.open(
this.message,
this.action && this.actionButtonLabel, {
duration: 2000
}
);
Solution 5:[5]
You can do like this (angular 8+)
openMessageSnackBar("Server error", "OK");
openMessageSnackBar(message: string, action: string) {
this._snackBar.open(message, action, {
horizontalPosition: "center",
verticalPosition: "left",
duration: 5000,
});
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | undefinederror |
Solution 2 | Narendra CM |
Solution 3 | Tomerikoo |
Solution 4 | snorkpete |
Solution 5 | white_shadow |