Для использования Toastify в Angular проекте необходимо сначала установить библиотеку через npm:
npm install toastify-js
После установки подключение библиотеки может быть выполнено двумя способами:
angular.json в раздел scripts добавляется путь
к библиотеке:"scripts": [
"node_modules/toastify-js/src/toastify.js"
]
import Toastify from 'toastify-js';
import 'toastify-js/src/toastify.css';
Использование второго способа позволяет более гибко управлять библиотекой и интегрировать её в компоненты.
Toastify создаёт уведомления, которые могут быть конфигурированы через объект параметров. Основные ключи:
true/false)."top"
или "bottom"."left", "center", "right".Пример базового вызова:
Toastify({
text: "Операция выполнена успешно",
duration: 3000,
gravity: "top",
position: "right",
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)"
}).showToast();
Создание сервиса для управления уведомлениями упрощает повторное использование:
import { Injectable } from '@angular/core';
import Toastify from 'toastify-js';
@Injectable({
providedIn: 'root'
})
export class ToastService {
show(message: string, options?: any) {
Toastify({
text: message,
duration: options?.duration || 3000,
gravity: options?.gravity || "top",
position: options?.position || "right",
backgroundColor: options?.backgroundColor || "linear-gradient(to right, #00b09b, #96c93d)",
close: options?.close || false,
onClick: options?.onClick
}).showToast();
}
}
В компоненте сервис подключается через DI и используется для вызова уведомлений:
import { Component } from '@angular/core';
import { ToastService } from './toast.service';
@Component({
selector: 'app-example',
template: `<button (click)="notify()">Показать уведомление</button>`
})
export class ExampleComponent {
constructor(private toastService: ToastService) {}
notify() {
this.toastService.show("Данные успешно сохранены");
}
}
Toastify поддерживает полное управление стилями:
className позволяет добавлять собственные
CSS-классы:Toastify({
text: "Ошибка при загрузке данных",
className: "error-toast",
duration: 5000
}).showToast();
.error-toast {
background-color: #ff4c4c;
color: #fff;
font-weight: bold;
border-radius: 5px;
padding: 10px 20px;
}
gravity и
position позволяет создавать уведомления в углах экрана или
по центру.Toastify позволяет реагировать на действия пользователя:
Toastify({
text: "Нажмите для перехода",
onClick: () => window.location.href = "/profile"
}).showToast();
close: true пользователь может
самостоятельно скрыть уведомление до окончания таймера.При использовании Angular Material можно объединять Toastify с другими компонентами:
MatDialog.Пример:
import { MatDialog } from '@angular/material/dialog';
import { ToastService } from './toast.service';
constructor(private dialog: MatDialog, private toastService: ToastService) {}
openDialog() {
const dialogRef = this.dialog.open(SomeDialogComponent);
dialogRef.afterClosed().subscribe(result => {
if (result === 'success') {
this.toastService.show("Операция выполнена успешно");
}
});
}
offset в зависимости от количества уведомлений на
экране.Toastify({
text: 'Доступно <a href="/update">обновление</a>',
duration: 5000,
escapeMarkup: false
}).showToast();
styles.scss для единообразного внешнего
вида всех уведомлений.duration и позицию уведомлений в
зависимости от контекста.