Object不支持属性或方法'getAttribute'

时间:2016-06-28 19:34:03

标签: angular typescript cordova ionic-framework

我看了一些答案,但没有任何对我有用,我迷失了。我正在使用Cordova,Ionic和Angular 2。

这是我的HTML

 <ion-col *ngFor="let value of myButtonsFirstRow" width-25>
  <button #elem ptcolor (click)="volumeClick(elem)" attr.floatValue="{{value}}">
    {{value | fraction}}
  </button>
</ion-col>

这是我的TypeScript

volumeClick(htmlElem: HTMLElement) {
  this.volumeSelected = +htmlElem.getAttribute('floatValue'); 
}

我正在尝试从我创建的属性(在我的HTML中)中设置值。但看起来我不能使用getAttribute方法。我的htmlElem设置但是我也没有看到这个方法所以我知道我做错了什么但是我不知道是什么!

由于

2 个答案:

答案 0 :(得分:1)

是的,因为adresses = set() for row in reader: addr = socket.gethostbyname(row[0]) if addr not in adresses: adresses.add(addr) url = row[0][4:] if row[0].startswith('www.') else row[0] result.append({'entry':[url, addr]}) 是一个离子组件。所以我看到了几种方法:

1)遗憾的是,elem组件没有公共方法/属性来获取Button / nativeElement。这段代码应该有效:

attribute

2)获取属性的其他方法是在模板中使用volumeClick(elem: any) { this.volumeSelected = +elem._elementRef.nativeElement.getAttribute('floatValue'); } ,如下所示:

$event

然后您的方法将如下所示:

<button (click)="volumeClick($event)" attr.floatValue="{{value}}"> {{value}}</button>

注意:我使用volumeClick(event: any) { this.volumeSelected = +event.currentTarget.getAttribute('floatValue'); } 因为currentTarget组件有多个孩子。

3)您可以将Button传递给点击事件:

value

或者有点简单:

<button (click)="volumeClick(value)">{{value}}</button>

volumeClick(value: any) {
  this.volumeSelected = value; 
}

答案 1 :(得分:0)

模板变量的引用返回ElementRef。如果您想访问HTMLElement使用ElementRef.nativeElement

volumeClick(htmlElem: ElementRef) {
  this.volumeSelected = +htmlElem.nativeElement.getAttribute('floatValue'); 
}