2016-11-26 28 views
0

我創建了一個組件,只有當某個obj不爲null時才顯示它的ng-content(這比實際中更復雜,但是假設這是爲了這個問題的情況)。Angular 2 - ng-content內部的語句不應該被解析

這裏是如何的組件 「補償」 一詞:

<comp [ref]="obj"> Name: {{obj.name}} </comp>

組件模板看起來像這樣:

<ng-content *ngIf="ref != null"></ng-content>

的問題是,角試圖解析{{ obj.name}},然後它出現在comp的模板的ng-content中(當obj爲null時),從而導致錯誤。

我想在ng-content顯示的時候只能解析ng-content中的語句。我怎麼做?

回答

2

看到,因爲你正在使用內容投影(類似於包含)每https://toddmotto.com/transclusion-in-angular-2-with-ng-content角2將試圖使Name: {{obj.name}}它把這些內容到你的其他組件之前。

如果您所投射的內容在任何時候都不安全,您需要根據您要使用的效果,在外部或上使用*ngIf或埃爾維斯運營商{{obj?.name}}來防範。

+0

有沒有什麼方法可以讓Angular 2在將它放入其他組件之前不會嘗試渲染Name:{{obj.name}}? –

+0

據我所知,你必須將它包裝在一個'span'或另​​一個元素中並應用'* ngIf =「obj?.name」' – silentsod

+0

謝謝,但是我有點兒已經知道,我是尋找一種方法來阻止Angular 2在將其放入組件之前嘗試渲染它,以獲得「更清潔」的解決方案。希望熟悉Angular 2背後的人會有一個想法。無論如何,我都很欣賞你的回答 –