2017-01-10 26 views
6

假設我有以下組成部分:如何捕捉Angular 2中的內聯模板錯誤?

@Component({ 
    template: '<div>{{foo.bar}}</div>' 
}) 
class DemoComponent { 
    foo = undefined; 
} 

注意如何我試圖訪問一個未定義值的bar財產。這將引發類似的錯誤:

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

我想用custom ErrorHandler趕上這個錯誤:

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

也許這是其中一個罕見的時候,當它要求這個問題有雙角/ angularjs標記 – JGFMK

回答

0

您可以使用*ngIf="!foo.bar"創建一個模板。

如果一個異步請求,你等着,你可以使用異步管道與安全的運營商只是等待值,而不引發錯誤:(foo | async).bar

是有什麼特別的理由,有一個模板這個錯誤處理程序?