【问题标题】:Angular 2 element dynamic refAngular 2 元素动态参考
【发布时间】:2017-03-11 14:40:05
【问题描述】:

我正在使用这个包在我的应用程序中创建一个弹出框:
https://github.com/pleerock/ng2-popover
问题是我有一个带有ngFor 数据的表,所以我需要为不同的行使用不同的弹出框。代码如下:

<div class="dt-row" *ngFor="let key of keys">
  <popover-content #actions
                   title="Actions"
                   placement="bottom"
                   [animation]="false"
                   [closeOnClickOutside]="true"
                   [closeOnMouseOutside]="false"
                   [disabled]="false"
                   [onHover]="false">
    <a>Edit</a>
    <a>Delete</a>
  </popover-content>

  <div [popover]="actions">
    ...
  </div>
</div>

所以actions 引用对于所有ngFor 实例都是相同的。
我怎样才能使那个 ref 动态?类似[ref]="'actions-' + key.id"

【问题讨论】:

  • 你可以使用 index. *ngFor="let key of keys; let i = index; trackBy: trackByFn" 然后[ref]="'actions-' + index"
  • 是的,谢谢,但看起来 Angular 不知道 [ref] 这样的指令。

标签: angular popover


【解决方案1】:

正如评论所暗示的,您将使用索引:

<div class="dt-row" *ngFor="let key of keys; let i = index;">
            <popover-content #i
                             title="Actions"
                             placement="bottom"
                             [animation]="false"
                             [closeOnClickOutside]="true"
                             [closeOnMouseOutside]="false" >
              {{key.interestingInfo}}
                <a>Edit - {{key.name}}</a>
                <a>Delete - {{key.name}}</a>
            </popover-content>

            <div [popover]="i">
                {{key.clickText + key.name}}
            </div>
    </div>
</div>

这里是一个工作 plunker 的链接,展示了弹出内容具有不同的内容: http://plnkr.co/edit/kVJSnn?p=preview

【讨论】:

  • 哇,这真的有效 O_o 我不明白怎么做,但是谢谢!
  • 它可以工作,因为引用#i 并没有真正使用,如果你删除它,它会工作相同。如果您没有在 ts 文件中实现 @ViewChild 属性以访问打字稿中的 DOM 元素或在 html 模板的其他部分使用该引用,例如将其作为方法的参数传递,那么声明是没有意义的参考 # 无用
猜你喜欢
  • 2018-12-16
  • 2019-02-16
  • 1970-01-01
  • 2018-07-11
  • 2017-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多