ng总是返回数组中第一个对象的id

时间:2018-06-14 07:05:07

标签: angular5 bootstrap-modal variable-assignment ngfor

我试图通过将对象的ID分配给单击按钮时在组件中声明的变量来获取对象的ID。但是,它似乎每次只获得第一个对象ID。

这是StackBlitz的链接,它复制了我遇到的问题:

https://stackblitz.com/edit/angular-vcbzxf

非常感谢任何协助。

1 个答案:

答案 0 :(得分:1)

更新1:您可以使用bootstrap模式实际实现您想要的功能,只需进行如下更改。

<强> comment.component.html:

<div *ngFor="let comment of post.comments; let i = index">

  {{ comment.content }}
  <button data-toggle="modal" [attr.data-target]="'#confirmDeleteCommentModal' + comment.id">Get ID</button>

    <div class="fade modal" [attr.id]="'confirmDeleteCommentModal' + comment.id" tabindex="-1" role="dialog" aria-labelledby="confirmDeleteCommentModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="confirmDeleteCommentModalLabel">Delete Comment</h5>
                    <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-light" data-dismiss="modal">Cancel</button>
                    <button type="button" class="btn btn-primary" (click)="checkId(comment.id)">Delete</button>
                </div>
            </div>
        </div>
    </div>

</div>

注意[attr.data-target]="'#confirmDeleteCommentModal' + comment.id"添加到Get ID按钮和[attr.id]="'confirmDeleteCommentModal' + comment.id",它被添加到bootstrap模式中。此外,模态现已包含在*ngFor div element

以前,data-target按钮的Get ID始终设置为confirmDeleteCommentModal,我们在技术上只有一个引导模式,id设置为confirmDeleteCommentModal,我认为这是导致问题的原因,我们总是加载相同的(和第一个)bootstrap模式。

更新了stackblitz:https://stackblitz.com/edit/angular-3tmtwa

原始答案(这没有解决问题):

如果您按照最近的评论(在此处实施 - https://stackblitz.com/edit/angular-vcbzxf),我只想指出您可以按如下方式编写comment.component.html

<强> comment.component.html

<div *ngFor="let comment of post.comments">
    <div>
        {{showDelete ? 'Are you sure you want to delete?' : comment.content + ' id = ' + comment.id}}
        <button *ngIf="showDelete" (click)="showDelete = false">Cancel</button>
        <button (click)="(showDelete == false && showDelete = true) || checkId(comment.id)">Delete</button>
    </div>
</div>

Stackblitz给它一个快速测试:https://stackblitz.com/edit/angular-q27xn7

虽然这可能不是你所做的很大改进,但我想我会指出其他方法来取得类似的结果。