2017-04-05 38 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放到了这个具体的弹出列表中,我遇到了问题 –