#angular #typescript #bootstrap-4
Вопрос:
Я пытаюсь найти способ создать всплывающее сообщение или предупреждение после успешного заполнения формы и перенаправления на другую страницу в Angular
Что-то вроде «Новая форма успешно добавлена» после навигации
Это мой код для навигации по корневому каталогу
specialEvents = []
constructor( private _eventService: EventService,
private _router: Router) { }
ngOnInit(): void {
this._eventService.getSpecialEvents()
.subscribe(
res => this.specialEvents = res,
err => {
if( err instanceof HttpErrorResponse ) {
if (err.status === 401) {
this._router.navigate(['/home'])
}
}
}
)
}
Может ли кто-нибудь, пожалуйста, дать мне представление о том, как показывать всплывающее окно или оповещение об успехе после этого._router.navigate([‘/home’])
Ответ №1:
Вам необходимо добавить всплывающее событие оповещения в метод ngOnInit компонента, который связан с маршрутом «/home».
Например: Если компонент Home связан с путем «/home» в маршрутизаторе вашего приложения как
{ путь: «домой», компонент: домашний компонент }
затем компонент «HomeComponent» будет инициирован во время навигации маршрутизатора к «/home». Следовательно, в методе ngOnInit «HomeComponent» добавьте функцию всплывающего окна с предупреждением для отображения предупреждающего сообщения.
Ответ №2:
Да, вы можете установить время ожидания:
ngOnInit(): void {
this._eventService.getSpecialEvents()
.subscribe(
res => this.specialEvents = res,
err => {
if( err instanceof HttpErrorResponse ) {
if (err.status === 401) {
this._router.navigate(['/home'])
setTimeout(() => {
window.alert('Unauthorized');
}, 500);
}
}
}
)
}
Комментарии:
1. Спасибо, это то, чего я хотел
Ответ №3:
Попробуйте это
В свой файл app.ts добавьте это
ngAfterViewInit() {
setTimeout(() => {
if (this.router.url === '/home') {
window.alert('welcome');
}
},1000)
}
Ответ №4:
Там у вас есть большой выбор.
- Вы можете использовать оптимистичный подход, назовите свой тост или предупредите после
navigation
:
this._router.navigate(['/home']);
alert('Navigated');
- Вы можете подписаться на события маршрутизатора, и когда навигация начинается с вашего компонента и заканчивается на вашем домашнем компоненте, вы можете отправить туда свое предупреждение.
В свой app.component
вы можете добавить это:
this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => {
if (event.url.inlcudes('home')) alert();
});
- Вы можете использовать цепочку обещаний навигации маршрутизатора для обработки навигации в вашем компоненте:
this.router.navigate(['/', 'home'])
.then(nav => {
window.alert('Home');
}, err => {
console.log(err) // when there's an error
});
PS: Если вам интересно, как создать собственный тостер? Я бы посоветовал вам для начала использовать стороннюю библиотеку. ngx-тостр-хороший выбор.