也许只有一个"时尚"但尽管如此......
我正在使用以下工作:
// 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听起来像是黑客(下划线表示私有属性,如_privateVar,isn&#39; t)。
那么访问nativeElement是一种更优雅的方式,甚至更好的方式是访问它的媒体ID&#39;属性?
非常感谢任何暗示。
修改
此问题的答案在 user184994 和 JB Nizet 的评论中。由于他们都正确地解决了这个问题,我无法设置接受的答案&#34;标志,因为它只能被分配一次。
因此,我将我的问题编辑为对此的承认。
答案 0 :(得分:1)
已经给出了答案,但我想补充一点并回答它。
您正在使用按钮,对于大多数浏览器, 会提交默认类型的按钮。
如果尝试删除则会提交 ,如果您不想要,可以将其类型更改为public String GetDeviceipMobileData(){
try {
for (java.util.Enumeration<java.net.NetworkInterface> en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
java.net.NetworkInterface networkinterface = en.nextElement();
for (java.util.Enumeration<java.net.InetAddress> enumIpAddr = networkinterface.getInetAddresses(); enumIpAddr.hasMoreElements();) {
java.net.InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (Exception ex) {
Log.e("Current IP", ex.toString());
}
return null;
}
public String GetDeviceipWiFiData(){
android.net.wifi.WifiManager wm = (android.net.wifi.WifiManager) getSystemService(WIFI_SERVICE);
@SuppressWarnings("deprecation")
String ip = android.text.format.Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
return ip;
}
。
type = "button"
另外如果你想要 ,你可以只传递id ,只需使用<div *ngFor="let media of period.media">
<button type = "button" #btn
(click)="onDeleteClick(media)"
[attr.media-id]="media.ID">{{'DELETE' | translate}}</button>
</div>
这就更好了性能 。如果您不需要,可以删除模板varibale
//component.ts
onDeleteClick(media.id)
如果您只传递id,则需要更改语法,如
this.period.media = [
{id: 123}, {id: 456}, ...
];
.
.
.
onDeleteClick(media) {
console.log(media.id);
}