2017-03-27 29 views
5

當角度2中存在模板錯誤時,整個應用程序無法工作。如何處理角度2中的模板錯誤(和其他錯誤)?

不僅應該有模板導致錯誤,失敗的工作和其他應用程序工作正常的組件?

如何處理錯誤,以便發生錯誤時應用程序不會停止響應?

+3

你應該修復它們,不要錯誤地發佈代碼(:這是一個好的事情,應用程序失敗。但是,你可以使用自定義['ErrorHandler'](https://angular.io/docs/ts/最新的/ api/core/index/ErrorHandler-class.html)... – Sasxa

+1

面對同樣的問題,但似乎沒有解決模板解析錯誤@harryjohn你有什麼解決這個問題? – Kanchan

回答

4

您可以自定義ErrorHandler使用:

class MyErrorHandler implements ErrorHandler { 
    handleError(error) { 
    // do something with the exception 
    } 
} 
@NgModule({ 
    providers: [{provide: ErrorHandler, useClass: MyErrorHandler}] 
}) 
class MyModule {} 
+0

很好的答案,但是當這個類如果可以,請提供更多解釋,謝謝 –

+0

@PardeepJain這是一個根提供者,所以它應該適用於整個應用程序。我不知道會發生什麼情況,如果你有多於一個的ErrorHandler以及延遲加載的模塊和它們的注入器,我只寫了其中的兩個:一個用於真正的應用程序,可以將錯誤保存到firebase;第二個用於停止那些煩人的區域的exceptio ns與HMR一起服務並做造型工作。但是這兩者就像這個例子一樣,提供者在'AppModule'級別。我沒有探索它進一步... – Sasxa

+0

好吧非常感謝信息,更有一件事我嘗試了這個,但拋出一些錯誤不知道最新的原因,我應該創建ErrorHandler seprate模塊?或者就像在回答中那樣在appModule中導入? –

-1

使用?標記是在將對象/數組屬性綁定到模板時的解決方案。

"user?.name?.firstname" 

尋找更合併的解決方案,我們應該能夠處理模板綁定錯誤時,巨大的數據對象來自API並添加?對於每個財產都不是一個穩定而漫長的解決方案。