Angular Material SnackBar 和自定义 ErrorHandler 来通知错误

2023-12-26

我有一个错误自定义处理程序类,它实现了 Angular 5 核心的 ErrorHandler。如果发生错误,handleError 方法必须通知它发送显示的小吃栏材料组件。 如果错误是在测试按钮中引发的,那么一切都很好。

如果错误发生在 ngOnInit 方法上,则小吃栏将无法正常工作,并且会显示在页面的错误位置,并且您无法再将其关闭。

I.E.

我的组件:



export class RootPageComponent implements OnInit {

    constructor() {}

    public buttonTest() {
        it.happens;
    }
    ngOnInit() {
        it.happens;
    }
}
  

这是我的自定义错误处理程序:



export class ErrorHandlerCustom extends ErrorHandler {

    constructor(...){}
    handleError() {
        const notificationService = this.injector.get(NotificationService);
        // notification custom using snackbar material
        notificationService.exceptionError(error);
    }
}
  

ngOnInit 中出现错误的结果:ngOnInit 错误 https://i.stack.imgur.com/OVosE.png

点击测试按钮:单击测试按钮 https://i.stack.imgur.com/AEeGv.png


我终于弄清楚了问题所在。我不知道这是否是正确的方法。

在很多情况下,错误处理程序将在 Angular 区域之外运行。这会导致 toast 行为不正确,因为更改检测不会在其上运行。因此,在正确的运行中使用区域是必要的。




    this.zone.run(() => {
        this.snackBar.open(message, "UNDO");
    }
  

在这里,我找到了我的解决方案,并将其发布,以防其他人遇到同样的问题:https://github.com/angular/material2/issues/9875 https://github.com/angular/material2/issues/9875

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular Material SnackBar 和自定义 ErrorHandler 来通知错误 的相关文章

随机推荐

  • 如何在 PHP 中获取当前日期和时间?

    哪个 PHP 函数可以返回当前日期 时间 时间将以您的服务器时间为准 一个简单的解决方法是使用以下命令手动设置时区date default timezone set http php net manual en function date
  • 将 Arraylist 作为参数传递给函数[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个整
  • 错误:只有字符串可以转换为符号

    我不太精通 R 但最近安装了 ggpubr 包 因为想要制作配对箱线图 我尝试过使用 ggpaired question1 cond1 question1 q1 cond2 question1 q2 fill condition palet
  • Mysql DB 表行消失

    最近发生了一个非常奇怪的 对我来说 问题 在接受用户提交数据的应用程序中 以下情况随机发生 存储用户提交数据的数据库表中的行是disappearing 请注意除 INSERT 语句外 没有对数据库表发出 DELETE DROP TRUNCA
  • 逐列打印二维数组

    这个非常基本的代码逐行打印我的二维数组 public class scratchwork public static void main String args throws InterruptedException int test ne
  • VS2012 RC 中不识别外键

    经过昨天的大量帮助 我在 asp net4 beta 中遇到了一个已知错误 我升级到 VS2012 RC Express 4 5 现在 VS 在我的模型中报告了两个错误 这些错误以前是正常的 找不到类型或命名空间名称 ForeignKeyA
  • 带有多个可选搜索词的参数化查询

    我有一个包含大量数据的 Web 应用程序 以及一个包含多个字段 例如名称 状态 日期等 的搜索 过滤功能 我一直在对常规 非搜索 查询使用这样的参数化查询 id POST itemID db mysqli connect host user
  • 应用程序传输安全性已阻止明文 HTTP (http://) 资源加载,因为它不安全。

    据说临时异常可以通过应用程序的 Info plist 文件进行配置 根据其他答案 我将此条目添加到 info plist 中 但它没有帮助 更糟糕的是 在我更改 xml 文件后 当我尝试在 iPhone 上运行该应用程序而不是在模拟器上运行
  • 使用 Kendo Grid,如何更改工具栏中“创建”按钮上的措辞?

    我正在使用 Kendo 网格 我添加了 创建 来执行记录的内联添加 如何更改添加按钮上的措辞 目前它显示为 添加新记录 我想将其简化为仅读取 添加 并且我还想保留相同的图标 我的代码如下所示 reports kendoGrid dataSo
  • 如何根据另一个查找表/数据框自动插入一个数据框的值?

    我有一个数据框和一张查找表 我想要的是比较df dat value with df lookup threshold 如果value落入threshold范围 然后创建一个新列transfer in df dat使其值为 从线性插值tran
  • xcode 7 生成带有附加 CoreDataProperties 类别的核心数据实体

    我在 xcode 7 中有一个奇怪的新功能 当我生成新的 NSManagedObject 子类时 xcode 创建两个类 实体及其 CoreDataProperties 类别 其中包含完整的实现 下图是我的意思的例子 我找不到任何关于此的记
  • 如何在 Ruby 中使用 DateTime strptime 解析非英语日期?

    我正在尝试解析从 CMS 导出的日期 不幸的是 设置了瑞典语言环境 月份名称缩写为三个字符 这在 5 月和 10 月时有所不同 maj 与 May 以及 okt 与 Oct 我希望使用 DateTime strptime 并设置正确的区域设
  • 将 16 位灰度 PNG 转换为 HEVC/x265

    我想将 12 位图像信号转换为 HEVC 以进行有效压缩 因为我需要能够重建原始 12 位信号 所以压缩需要是无损可逆的 目前我的数据为 16 位 PNG 文件 我的第一次尝试是使用 ffmpeg ffmpeg y framerate 1
  • Javascript正则表达式:查找后面不跟空格字符的单词

    我需要 javascript 正则表达式来匹配后面不跟空格字符并且之前有 的单词 如下所示 bug 找到 bug 因为它后面没有空格 bug 和我 什么也没找到 因为 bug 后面有空格 bug 和 another 只查找 another
  • Android Studio 不同目录的路径

    今天我想清理我安装了 Windows 的 SSD 我发现在C 用户 SonneXo一个文件夹 1 6 GB 我想更改它 AndroidStudio预览我搜索了它 互联网建议我更改设置创意 属性 我做了 Uncomment this opti
  • simplexml_load_string 中的数据丢失

    我正在用这段代码读取 xml xml simplexml load string data 它读取正确 并且可以通过 xml gt title 等访问数据 但我需要访问 CDATA 和
  • templateUrl 与 angular2 中的函数

    嗯 角度 1 x y 是 angular module myApp directive myDirective function return templateUrl function tElement iAttrs return http
  • Google Materials Charts(Scatter)不显示趋势线或工具提示

    我正在使用 Google 图表 在 IE v11 中运行的材料图表 当我执行趋势线和工具提示等操作时 它们不再起作用 如果我添加列 type string role tooltip 也会发生同样的情况 什么也不会出现 如果我改变 packa
  • Spring Boot - 创建名为“jmsConnectionFactory”的 bean 时出错

    Spring Boot 中的新功能 我正在尝试在 Tomcat 8 0 30 服务器上运行 Spring Boot 应用程序 这是我的pom xml
  • Angular Material SnackBar 和自定义 ErrorHandler 来通知错误

    我有一个错误自定义处理程序类 它实现了 Angular 5 核心的 ErrorHandler 如果发生错误 handleError 方法必须通知它发送显示的小吃栏材料组件 如果错误是在测试按钮中引发的 那么一切都很好 如果错误发生在 ngO