我有問題獲得條件屬性item-left和item-right來處理ion-item中的元素。看來,如果我使用項目左側和項目右側,整個html輸出實際上會發生變化。如何將條件項目右側或項目左側添加到離子頭像?
我想要實現的是一個簡單的聊天應用程序,它顯示離子列表中左側或右側的離子化身。下面是我想要實現的一個例子。方法isMe()返回true或false,取決於顯示的當前消息是否來自我。
<ion-list no-lines>
<ion-item *ngFor="let msg of messages" text-wrap>
<ion-avatar [attr.item-left]="isMe(msg.userid) ? '' : null" [attr.item-right]="isMe(msg.userid) ? null : ''">
<img [src]="getAvatar(msg.avatar)">
</ion-avatar>
<div class="chatbubble {{isMe(msg.userid) ? '' : 'other'}}" item-content>
{{msg.message}}
</div>
</ion-item>
</ion-list>
如果我硬編碼兩個每個項目左和項目權在各自離子化身它不正確地顯示出來,但由於某些原因包裝這在ngFor一直沒有離子項目的列表運作良好。正如我所提到的,研究html輸出項目右鍵實際上似乎是對html輸出進行排序以實現項目左側或右側之間的差異,因此看起來這些屬性是編譯時效果?
更新!我確實找到了一種使用* ngIf解決這個問題的方法,雖然相當醜陋,因爲我不能在離子項上使用* ngIf,因爲* ngFor已經是重複元素了。所以我沒有在每個標籤下使用* ngIf。下面是可以工作的代碼,儘管希望有更好的做法。將標籤封裝在兩個div中不起作用,因爲item-left和item-right需要位於ion-avatar上,以便ionic2爲這兩種情況創建正確的html輸出。無論如何,如果有人需要它,下面的代碼在這種情況下工作正常(雖然很醜)。
<ion-list no-lines>
<ion-item *ngFor="let msg of messages" text-wrap>
<ion-avatar item-left *ngIf="isMe(msg.userid)">
<img [src]="getAvatar(msg.avatar)">
</ion-avatar>
<div class="chatbubble" item-content *ngIf="isMe(msg.userid)">
{{msg.message}}
</div>
<ion-avatar item-right *ngIf="!isMe(msg.userid)">
<img [src]="getAvatar(msg.avatar)">
</ion-avatar>
<div class="chatbubble other" item-content *ngIf="!isMe(msg.userid)">
{{msg.message}}
</div>
</ion-item>
</ion-list>
作爲一個附加的註釋較好的分離,所以這是有可能的問題,因爲它的試圖將頭像浮在標籤中,這肯定不起作用。但我發現它很奇怪,但是html輸出與我的模板中的實際標記非常不同。 – Johncl