【未解决】angular nebular toastrService.show can‘t trigger

问题解决:

待调研

问题原因:

经过一步一步调试,发现并不是toastrService.show 没有触发, 而是在前一个view上面触发过后,执行了路由跳转,导致渲染弹框的容器dom 消失导致的。
正常所有元素的渲染结构如下:

<component-a>
	<nb-layout>
		<div class="content"></div>
	</nb-layout>
</component-a>

当前在component-b里面发生异常情况被捕获后,原来组件的toastrService.show 触发在component-btoastr-overlay-container 里面了,结构如下:

<component-b>
	<nb-layout>
		<div class="content"></div>
		<div class="cdk-overlay-container">
			<div class="toastr-overlay-container cdk-global-overlay-wrapper">
			//toastrService.show 触发出来的弹框渲染在这里
			</div>
		</div>
	</nb-layout>
</component-b>

当路由跳转后,整个component-b dom被替换成了<component-a> 的dom,所以看不到提示弹框,误以为是没有触发。

问题描述:

想要做一个全局拦截器,用来针对所有出错的http 请求,通知用户出错且显示出错提示。主要代码如下,只要错误是401,弹框不能成功触发。

if (error?.status === 401) {
	this.toastrService.show(message, title);  // 期望有弹框提示,但是没有
    this.router.navigate(['/login']);
} else if (error?.status >= 500) {
	this.toastrService.show(message, title);  // 预期有弹框提示,可以成功提示用户
}

Reference

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值