【发布时间】:2018-05-27 18:22:49
【问题描述】:
也许只是“时尚”,但仍然......
我有以下工作:
// Template
<div *ngFor="let media of period.media">
.
.
.
<button #btn (click)="onDeleteClick(btn)" [attr.media-id]="media.ID">
{{'DELETE' | translate}}
</button>
</div>
//component.ts
this.period.media = [
{id: 123}, {id: 456}, ...
];
.
.
.
onDeleteClick(elem) {
console.log(elem._elementRef.nativeElement.getAttribute('media-id'));
}
它可以工作 (the console shows 123, 456,...),但使用 _elemntRef 访问 nativeElelement 听起来像个 hack(下划线表示私有属性,如 _privateVar,不是吗)。
那么访问 nativeElement 或者更好的方法是访问它的 'media-id' 属性呢?
非常感谢任何提示。
编辑
这个问题的答案在 user184994 和 JB Nizet 的 cmets 中。由于他们都正确解决了问题,我无法设置“已接受答案”标志,因为它只能分配一次。
因此,我正在编辑我的问题以确认这一点。
【问题讨论】:
-
您可以随时将其传递给您的
onDeleteClick,例如onDeleteClick(btn, media.ID) -
视图应该来自模型,反之亦然。传递媒体,而不是对按钮的引用。并使用 media.id 获取媒体 ID:
(click)="onDeleteClick(media)"。按钮上的 media-id 属性没用。 -
@user184994 和@JB_Nizet。哇,我觉得自己好傻!太简单了!我会告诉 user184994 和 JB_Nizet 发布你的 cmets 作为答案。我希望支票都被接受,但我担心不是。
标签: angular elementref