Angular2返回节点而不是Element

时间:2016-10-04 10:02:14

标签: angular class typescript

export class AppComponent {
  title = 'Dashboard';
  navbarmenu = NAVBAR;

  constructor(router:Router){
    router.events.subscribe((event: NavigationEvent) => {
      if(document.querySelector('.a-active')) document.querySelector('.a-active').classList.remove('a-active');
    });

    setTimeout(() => {
      let testTry = document.querySelector('.submenu li a.is-active');

      if(testTry){
        let anchor = testTry.parentNode.parentNode.parentNode.children[0];

        // anchor is a node and throwing an error.

        anchor.classList.add('a-active');
      }
    }
  }
}

错误:'Node'

类型中不存在属性'classList'

如果没有评论此setTimeout函数,则无法启动我的服务器。但是当服务器运行并取消注释时。它运行正常但仍然出错。

感谢。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

setTimeout(() => {
    let isActive = document.querySelector('.submenu li a.is-active')

    if(isActive) isActive.closest('ul').closest('li').children[0].classList.add('a-active')
})

尝试此解决方法!我不知道它为什么会返回节点。在普通的JavaScript中,您的代码应该可行。也许它是打字稿上的一个错误。

填充工具: https://stackoverflow.com/a/24107550/6741739https://github.com/jonathantneal/closest

如果有效,请通知我。