Package Exports
- ng2-toasty
- ng2-toasty/index
- ng2-toasty/src/toasty.service
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ng2-toasty) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Angular 2 Toasty

Angular2 Toasty component shows growl-style alerts and messages for your application.
Follow me to be notified about new releases.
Some of these APIs and Components are not final and are subject to change!
Installation
npm install ng2-toasty --saveDemo
Simple examples using ng2-dnd:
- with SystemJS in ng2-systemjs-demo
- with Webpack in ng2-webpack-demo
Online demo available here
Usage
If you use SystemJS to load your files, you might have to update your config:
System.config({
map: {
'ng2-toasty': 'node_modules/ng2-toasty'
},
packages: {
'ng2-toasty': { main: 'index.js', defaultExtension: 'js' },
}
});Finally, you can use ng2-toasty in your Angular 2 project:
- Import
ToastyService, ToastyConfig, ToastyComponent, ToastOptionsfromng2-toasty - Instantiate
ToastyService, ToastyConfigin the bootstrap of your application; - Add
ToastyComponentto the "directives" property of your application component; - Add
<ng2-toasty></ng2-toasty>tag in template of your application component.
import {Component} from '@angular/core';
import {ToastyService, ToastyConfig, ToastyComponent, ToastOptions, ToastData} from 'ng2-toasty';
import {bootstrap} from '@angular/platform/browser';
@Component({
selector: 'app',
directives: [ToastyComponent],
providers: [ToastyService, ToastyConfig],
template: `
<div>Hello world</div>
<button (click)="addToast()">Add Toast</button>
<ng2-toasty></ng2-toasty>
`
})
export class AppComponent {
constructor(private toastyService:ToastyService) { }
addToast() {
// Just add default Toast with title only
this.toastyService.default('Hi there');
// Or create the instance of ToastOptions
var toastOptions:ToastOptions = {
title: "My title",
msg: "The message",
showClose: true,
timeout: 5000,
theme: 'default'
onAdd: (toast:ToastData) => {
console.log('Toast ' + toast.id + ' has been added!');
},
onRemove: function(toast:ToastData) {
console.log('Toast ' + toast.id + ' has been removed!');
}
};
// Add see all possible types in one shot
this.toastyService.info(toastOptions);
this.toastyService.success(toastOptions);
this.toastyService.wait(toastOptions);
this.toastyService.error(toastOptions);
this.toastyService.warning(toastOptions);
}
}
bootstrap(AppComponent);How dynamically update title and message of a toast
Here is an example of how to dynamically update message and title of individual toast:
import {Component} from '@angular/core';
import {ToastyService, ToastyConfig, ToastyComponent, ToastOptions, ToastData} from 'ng2-toasty';
import {bootstrap} from '@angular/platform/browser';
import {Subject, Observable, Subscription} from 'rxjs/Rx';
@Component({
selector: 'app',
directives: [ToastyComponent],
providers: [ToastyService, ToastyConfig],
template: `
<div>Hello world</div>
<button (click)="addToast()">Add Toast</button>
<ng2-toasty></ng2-toasty>
`
})
export class AppComponent {
getTitle(num: number): string {
return 'Countdown: ' + num;
}
getMessage(num: number): string {
return 'Seconds left: ' + num;
}
constructor(private toastyService:ToastyService) { }
addToast() {
let interval = 1000;
let timeout = 5000;
let seconds = timeout / 1000;
let subscription: Subscription;
let toastOptions: ToastOptions = {
title: this.getTitle(seconds),
msg: this.getMessage(seconds),
showClose: true,
timeout: timeout,
onAdd: (toast: ToastData) => {
console.log('Toast ' + toast.id + ' has been added!');
// Run the timer with 1 second iterval
let observable = Observable.interval(interval).take(seconds);
// Start listen seconds beat
subscription = observable.subscribe((count: number) => {
// Update title of toast
toast.title = this.getTitle(seconds - count - 1);
// Update message of toast
toast.msg = this.getMessage(seconds - count - 1);
});
},
onRemove: function(toast: ToastData) {
console.log('Toast ' + toast.id + ' has been removed!');
// Stop listenning
subscription.unsubscribe();
}
};
switch (this.options.type) {
case 'default': this.toastyService.default(toastOptions); break;
case 'info': this.toastyService.info(toastOptions); break;
case 'success': this.toastyService.success(toastOptions); break;
case 'wait': this.toastyService.wait(toastOptions); break;
case 'error': this.toastyService.error(toastOptions); break;
case 'warning': this.toastyService.warning(toastOptions); break;
}
}
}
bootstrap(AppComponent);How to close specific toast
Here is an example of how to close an individual toast:
import {Component} from '@angular/core';
import {ToastyService, ToastyConfig, ToastyComponent, ToastOptions, ToastData} from 'ng2-toasty';
import {bootstrap} from '@angular/platform/browser';
import {Subject, Observable, Subscription} from 'rxjs/Rx';
@Component({
selector: 'app',
directives: [ToastyComponent],
providers: [ToastyService, ToastyConfig],
template: `
<div>Hello world</div>
<button (click)="addToast()">Add Toast</button>
<ng2-toasty></ng2-toasty>
`
})
export class AppComponent {
getTitle(num: number): string {
return 'Countdown: ' + num;
}
getMessage(num: number): string {
return 'Seconds left: ' + num;
}
constructor(private toastyService:ToastyService) { }
addToast() {
let interval = 1000;
let subscription: Subscription;
let toastOptions: ToastOptions = {
title: this.getTitle(0),
msg: this.getMessage(0),
showClose: true,
onAdd: (toast: ToastData) => {
console.log('Toast ' + toast.id + ' has been added!');
// Run the timer with 1 second iterval
let observable = Observable.interval(interval);
// Start listen seconds beat
subscription = observable.subscribe((count: number) => {
// Update title of toast
toast.title = this.getTitle(count);
// Update message of toast
toast.msg = this.getMessage(count);
// Extra condition to hide Toast after 10 sec
if (count > 10) {
// We use toast id to identify and hide it
this.toastyService.clear(toast.id);
}
});
},
onRemove: function(toast: ToastData) {
console.log('Toast ' + toast.id + ' has been removed!');
// Stop listenning
subscription.unsubscribe();
}
};
switch (this.options.type) {
case 'default': this.toastyService.default(toastOptions); break;
case 'info': this.toastyService.info(toastOptions); break;
case 'success': this.toastyService.success(toastOptions); break;
case 'wait': this.toastyService.wait(toastOptions); break;
case 'error': this.toastyService.error(toastOptions); break;
case 'warning': this.toastyService.warning(toastOptions); break;
}
}
}
bootstrap(AppComponent);License
Credits
Inspired by angular-toasty