我上面的图像带有“添加人员”按钮,单击“添加人员”后,将创建“人员1”行,依此类推。在每行的右端,我有一个共享图标,单击图标后,我想打开一个ul元素。问题是显示的弹出窗口的数量取决于行数。如果添加了5行,则显示5个弹出窗口。理想情况下,我只需要显示一个弹出窗口,对于Person 4行,它应该是33的弹出窗口(基本上是该特定行存在的弹出窗口)。我尝试添加* ngIf = i> 1条件,但是每次仅显示带有00的弹出窗口,这是不正确的,因为弹出位置将始终与Person 1位置平行。
<div>
<div *ngFor="let person of persons; let i = index">
<div>
<div class="userIcon">
<div>
<img class="person-img" src="assets/images/person.png" alt="My Profile">
</div>
<div>
<input id="form3" class="form-control" type="text">
<label for="form3" class="">{{person.name}}</label>
</div>
</div>
</div>
<div>
<div>
<input id="form5" class="form-control" #enteramount type="text">
<a class='dropdown-trigger sharebtn' href='#' data-target='dropdown{{i}}' (click)="shareIconClicked($event, i, enteramount)"></a>
{{i}}
<ul id='dropdown{{i}}' [ngClass]="{'popupShare': showPopup == true}" class='dropdown-content sharebtn-content'>
<li> {{i}}
Copy Message
</li>
<li>Whatsapp</li>
<li>Email</li>
</ul>
</div>
</div>
</div>
</div>
下图表示添加ngIf ='isFirst'之后的单个弹出窗口。我单击了Person 4共享图标。如果单击“ Person 3共享”或“ Person 5共享”图标,则弹出窗口始终位于第一行。
答案 0 :(得分:0)
只需使用first
像这样添加*ngFor
的支票-
<div *ngFor="let person of persons; first as isFirst">
....
<ul id='dropdown{{i}}' *ngIf='first' [ngClass]="{'popupShare': showPopup == true}" class='dropdown-content sharebtn-content'>
...</ul>
</div>
有关更多详细信息,请参阅官方文档-
答案 1 :(得分:0)
您应该尝试这样的角度Mat-menu功能。
<div *ngFor="let person of persons; first as isFirst">
.... code
<button mat-button [matMenuTriggerFor]="menu">Share</button>
<mat-menu #menu="matMenu">
<button mat-menu-item (click)="sharteWithFacebook(person)">Facebook</button>
<button mat-menu-item (click)="shareWithWhatapp(person)">Whatsapp</button>
</mat-menu>
</div>