2017-04-05 72 views
1

我在一個特定的彈出案例中爲我提供了一個通用的角度飛鏢問題: 如何在一個循環中使用角度飛鏢的#特殊運算符?如何在for循環中尋址動態元素名稱?

在我的情況下,我有一個用戶列表,我想打開一個彈出窗口,點擊詳細信息。我使用了popupSource指令,該指令自動計算彈出式開放被觸發的矩形#subjectParticipant以在其源旁邊顯示它。

的問題是,它似乎採取循環的最後一個矩形:所有用戶彈出窗口在同一位置打開

<li *ngFor="let activeUser of subject.users" > 
    <div class="profileImg" 
     (click)="popupUserInfoId = activeUser.userId" 
     popupSource #subjectParticipant="popupSource"> 
    <img src="/auth/user/photo/s/{{activeUser.userId}}"> 
    </div> 

    <info-popup *ngIf="popupUserInfoId == activeUser.userId" 
       [userId]="popupUserInfoId" 
       [source]="subjectParticipant" 
       [offsetX]="28" 
       [offsetY]="10" 
       [visible]="popupUserInfoId == activeUser.userId" > 
    </info-popup> 
</li> 

我的理解是,飛鏢角覆蓋下#subjectParticipant變量 n次只保留循環中的最後一個。有沒有辦法將動態(例如,用戶索引)附加到這個變量?

回答

2

範圍應該在<li>之內,並且對於每個<li>應該有一個不同的subjectParticipant值被維護。 我懷疑你的問題來自別的地方。 如果popupSource包含唯一值,那麼這應該是很容易通過添加

<div>{{subjectParticipant.uniqueid}}</div> 

*ngFor和檢查,如果它使每個activeUser不同的值進行調試。

+0

我正在使用material-popup,它使用PopupSourceDirective來保留彈出式觸發矩形的信息。 當我嘗試你的建議,我得到這個錯誤: EXCEPTION:NoSuchMethodError:類'PopupSourceDirective'沒有實例getter'uniqueid'。 –

+0

這是預期的。您可以嘗試使用自定義指令而不是實際提供唯一ID的'popupSource',只是爲了能夠正確調查'#subjectParticipant'是否是'activeUser'還是整個'* ngFor'呈現的HTML。我確定它是前者。 我不知道如何找出你想解決的實際問題。 –

+0

你說得對,我把這個popup的彈出源t放到了這個具體的彈出列表中,我遇到了問題 –