Пользовательский обработчик ошибок для angular не работает - PullRequest
3 голосов
/ 29 января 2020

Я пытаюсь реализовать пользовательский обработчик ошибок для моего приложения angular, и я застрял. Это работает, но только в некоторых действительно странных условиях.

Вот фрагмент стека с реализацией: https://stackblitz.com/edit/angular-mqvzba

Здесь, в проекте, у нас есть глобальный error-handler.service.ts внутри " папка app "и файл hello.component.ts с другими файлами компонентов.

Я уже добавил директиву обработки в разделе поставщиков app.module.ts. Странно то, что если я проверяю вновь созданную ошибку перед выдачей, то действительно верно, что это экземпляр CustomError.

То, что я ожидаю получить, это результат, когда setTimeout не закомментирован, но без его использования. .

Файлы для просмотра: - src / app / global-error-handler.service.ts - src / app / app.module.ts - src / app / hello.component.ts

1 Ответ

2 голосов
/ 29 января 2020

Убедитесь, что ваш класс CustomError расширяет встроенный класс Error. Кроме того, вам нужно будет настроить прототип объекта для instanceof для правильной работы при расширении встроенных функций. Ссылка: Пользовательский класс ошибок в TypeScript

export class CustomError extends Error {    
    button?: any
    errObject: any    
    constructor() {        
        super('custom');
        Object.setPrototypeOf(this, CustomError.prototype);
    }
}

Должен дать вам

Error received:  error on do the thing
global-error-handler.service.ts:42 My error! Yay!

Надеюсь, это поможет!

...