如何获取角度2中元素的属性值?

Posted

技术标签:

【中文标题】如何获取角度2中元素的属性值?【英文标题】:How to get the value of the attribute of element in angular 2? 【发布时间】:2017-11-10 08:43:35 【问题描述】:

我有一个 html 跨度,它有两个超链接。

<span><a href="http://appcarvers.cloudaccess.host/index.php?Itemid=207" >Shirley Setia</a><i class="fa fa-caret-right"></i>
<a href="http://appcarvers.cloudaccess.host/index.php?Itemid=210" >Harry</a>
</span>
我创建了一个角度指令。它读取 DOM 元素和 href 链接。但它只读取第一个 href 我如何从上面的 span 中读取第二个 href 以便我可以解析它。

import  Directive, ElementRef, Renderer, HostListener  from '@angular/core';
import  NavController  from 'ionic-angular';
import  Input, Output, EventEmitter  from '@angular/core';

@Directive(
  selector: '[stream-link]' // Attribute selector
)

export class StreamLink 
  constructor(public element: ElementRef, public renderer: Renderer) 

    renderer.listen(element.nativeElement, 'click', (event) => 

      let anchorUrl = this.element.nativeElement.querySelector('a');
      // This anchorUrl shows only first href url
    
  

【问题讨论】:

尝试使用@ContentChildren 【参考方案1】:

您在模板的哪个位置调用指令?是直接在&lt;span&gt; 元素上还是在更高级别?

querySelector API 仅选择给定选择器的 html 节点的第一个实例,因此如果您直接在 &lt;span&gt; 上应用指令,您当前的实现应该没有问题,因为基本上只有一个&lt;a&gt;tag 在&lt;span&gt;内。

如果指令托管多个跨度标签,例如:

<div stream-link>
  <span><a href="...">Link 1</a></span>
  <span><a href="...">Link 2</a></span>
  <span><a href="...">Link 3</a></span>
</div>

您应该改用querySelectorAll,这将选择嵌套在您的指令元素内的所有节点。

更新:

this.element.nativeElement.querySelectorAll('a') 的输出是一个 NodeList,它内置了 forEach 数组方法。只需遍历列表并获取每个元素的 href 属性。

let urls = [];
let nodes = this.element.nativeElement.querySelectorAll('a');
nodes.forEach(node => urls.push(node.href));

【讨论】:

我试过这个this.element.nativeElement.querySelectorAll('a'),但它只告诉了锚点和激活的锚点的数量,但没有显示锚点的实际 URL。

以上是关于如何获取角度2中元素的属性值?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery如何获取指定的属性值

如何使用 *ngFor 从对象角度获取值?

selenium如何获取已定位元素的属性值

如何在 iframe 中获取元素的属性值?

如何在 XML 中获取元素属性的值

当同一属性有多个值时,如何通过数据属性获取元素?