2017-01-10 3 views
6

は、私は次のコンポーネントがあるとします。私はcustom ErrorHandler使用して、このエラーをキャッチしたいと思います角度2のインラインテンプレートエラーをキャッチするには?私は未定義の値の<code>bar</code>プロパティにアクセスしようとしてるか</p> <pre><code>@Component({ template: '<div>{{foo.bar}}</div>' }) class DemoComponent { foo = undefined; } </code></pre> <p>お知らせ:

Error in class DemoComponent - inline template:1:9 caused by: Cannot read property 'bar' of undefined

class LoggingErrorHandler implements ErrorHandler { 
    constructor(private logger: Logger) { 
    } 

    handleError(error: any): void { 
    this.logger.error(error); 
    } 
} 

しかし、handleError方法は、テンプレート・エラーのために呼び出されていない。このようなエラーがスローされます。私のカスタムエラーハンドラは、テンプレートエラーではなく、他のエラーに対しても正常に動作します。テンプレートエラーをどのようにして捕捉できますか?

+2

ここで何が間違っていますか? https://plnkr.co/edit/mvNJ61VJUlI5oITQJzaN?p=preview – yurzui

+0

プランナーさんありがとうございました。うん、うまく動いているようだ。私のアプリはAngular1/Angular2ハイブリッドです。私は確かにまだわかっていませんが、それは問題を引き起こしていると推測しており、カスタムErrorHandlerが私のために働いていない理由です。 – battmanz

+1

多分、この質問のためにdual angular/angularjsタグを必要とするのはまれな時間のうちの1つです – JGFMK

答えて

0

*ngIf="!foo.bar"でテンプレートを作成できます。テンプレートを持っている特別な理由がある(foo | async).bar

:それはあなたが非同期リクエストに応じて待っているされている場合

、あなたはエラーをスローせずに、単に値を待つために安全なオペレータと非同期パイプを使用することができますこのためのエラーハンドラ?

関連する問題

 関連する問題