TypeScript - Property' id'类型' Node'上不存在

时间:2016-07-07 16:18:48

标签: javascript typescript angular

当我尝试获取元素的id时,我将此问题与TypeScript(对于Angular2)一起使用。 见这个例子:

<div id="search">
    <div id="field1"></div>
    <div id="field2"></div>
</div>

如果我尝试获取其中一个嵌套div的id,我可以正常执行此操作:

var element = document.getElementById("search");
var subelement = element.childNodes;
subelement[1].id;

然后我会&#34; field2&#34;。

但是当我尝试使用TypeScript执行此操作时,我收到了消息属性&#39; id&#39;类型&#39;节点&#39; 上不存在。结果我的代码不起作用。 我真的需要一个解决方案,因为我需要知道另一个内部的嵌套元素,除非有更好的方法。

3 个答案:

答案 0 :(得分:3)

节点不仅仅是元素,也不一定具有id属性。您应该使用.children,它只是元素的集合。

答案 1 :(得分:0)

我会使用document.getElementById来引用Angular2中的DOM元素,而是像这样利用@ViewChild

@Component({
  (...)
  template: `
    <div #search>
      <div id="field1"></div>
      <div id="field2"></div>
    </div>
  `
})
export class SomeComponent {
  @ViewChild('search') searchElement:ElementRef;

  ngAfterViewInit() {
    let domElement = searchElement.nativeElement;
    (...)
  }
}

答案 2 :(得分:0)

  

错误TS2551:类型“节点”上不存在属性“ setAttribute”。您是说“属性”吗?

const elements = document.querySelectorAll("text");

elements[k].style.transform = '...........'; ////错误

elements[k]['style'].transform = '..........'; //正在工作

elements[k].parentNode.setAttribute('....'); ////错误

elements[k].parentNode['setAttribute']('..'); //正在工作