Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular TS2339:不动产';href';不存在于类型';HTMLElement';_Angular_Typescript - Fatal编程技术网

Angular TS2339:不动产';href';不存在于类型';HTMLElement';

Angular TS2339:不动产';href';不存在于类型';HTMLElement';,angular,typescript,Angular,Typescript,我遇到了以下问题: 我无法访问HTML元素的属性href。 我得到这个错误: Property 'href' does not exist on type 'HTMLElement'.ts(2339) 代码如下: @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent

我遇到了以下问题:

我无法访问HTML元素的属性href。 我得到这个错误:

Property 'href' does not exist on type 'HTMLElement'.ts(2339)
代码如下:

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit {
  title = 'clientes-app';

  ngAfterViewInit(){
    (function($) {
        "use strict";
    
        var path = window.location.href; 
            $("#layoutSidenav_nav .sb-sidenav a.nav-link").each(function() {
                if (this.href === path) {
                    $(this).addClass("active");
                }
            });
    
        // Toggle the side navigation
        $("#sidebarToggle").on("click", function(e) {
            e.preventDefault();
            $("body").toggleClass("sb-sidenav-toggled");
        });
    })(jQuery);
  }
}

这是HTMLElement的接口:

并非每个HTML元素都具有href属性。 在回答中,我假设您正在访问锚标记。 但是,据我所知,以下HTML元素可能具有href属性:

<a>, <link>, <area>, <base>.

因此,您可以分别使用这些接口:HTMLanchoreElement、HTMLinkElement、HTMLEAElement、HTMLBaseElement。

这是HTMLElement的接口:

并非每个HTML元素都具有href属性。 在回答中,我假设您正在访问锚标记。 但是,据我所知,以下HTML元素可能具有href属性:

<a>, <link>, <area>, <base>.

因此,您可以分别使用这些接口:HTMLanchoreElement、HTMLinkElement、HTMLEAElement、HTMLBaseElement。

并非所有的
HTMLElement
都有
href
属性。在访问当前迭代的元素之前,请检查该元素是否是具有
href
属性的
htmlanchoreElement

if (this instanceof HTMLAnchorElement && this.href === path) {
     $(this).addClass("active");
}

并非所有
HTMLElement
s都有
href
属性。在访问当前迭代的元素之前,请检查该元素是否是具有
href
属性的
htmlanchoreElement

if (this instanceof HTMLAnchorElement && this.href === path) {
     $(this).addClass("active");
}

为了进一步解释,
每个
都应用于集合
HTMLElement
s。因此
this.href
中的
this
指的是
HTMLElement
。并非页面中的每个HTML元素都有href,因此,
HTMLElement
类型自然不会有
href
属性。但是像
HTMLanchoreElement
这样的类型会。非常详细的答案,但我想他只是在
navbar
$(“#layoutSidenav_nav.sb sidenav a.nav-link”)
谢谢,我也这么认为。我只想提及其他HTML标签,这些标签可能有href属性,以防将来有人用谷歌搜索这个问题请不要翻译非英语问题。它们与堆栈溢出无关,必须以“需要清晰性”或“不适合…”的理由关闭。为了进一步解释,
每个
都应用于集合
HTMLElement
s。因此
this.href
中的
this
指的是
HTMLElement
。并非页面中的每个HTML元素都有href,因此,
HTMLElement
类型自然不会有
href
属性。但是像
HTMLanchoreElement
这样的类型会。非常详细的答案,但我想他只是在
navbar
$(“#layoutSidenav_nav.sb sidenav a.nav-link”)
谢谢,我也这么认为。我只想提及其他HTML标签,这些标签可能有href属性,以防将来有人用谷歌搜索这个问题请不要翻译非英语问题。它们与堆栈溢出无关,必须以“需要清晰”或“不适合…”的理由关闭它们。Angular和JQuery永远不会是朋友
ngAfterViewInit
是一个特定且有用的生命周期挂钩,如果您使用2008全局库和现在与Angular竞争的自动执行函数,它将变得完全无关。铸造是你未来最基本的问题。Angular和JQuery永远不会成为朋友
ngAfterViewInit
是一个特定且有用的生命周期挂钩,如果您使用2008全局库和现在与Angular竞争的自动执行函数,它将变得完全无关。铸造是你未来最基本的问题。