Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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
Javascript 定义时角度6变量未定义_Javascript_Angular - Fatal编程技术网

Javascript 定义时角度6变量未定义

Javascript 定义时角度6变量未定义,javascript,angular,Javascript,Angular,我在组件中有一个预定义值path的变量 从Angular 6.0升级到6.1.7后,显示为undefined export class AppComponent implements OnInit { path: string = '/'; constructor(public route: Router) { console.log(this.path) } ngOnInit() { this.route.events.subscribe((route)=

我在组件中有一个预定义值
path
的变量

从Angular 6.0升级到6.1.7后,显示为
undefined

export class AppComponent implements OnInit {
  path: string = '/';

  constructor(public route: Router) {
    console.log(this.path)
  }

  ngOnInit() { 
    this.route.events.subscribe((route)=>{
      this.path = (route as any).url;
    })
    this.getFeatured();
  }
}
导致模板中出现错误的语句:

*ngIf="!path.includes('/reports') && !path.includes('/reviews') && !path.includes('/users')"
我认为这不是一个异步问题,因为它将其登录到控制台:


在我跟踪了您的代码之后,发生这种情况是因为订阅是针对
事件的,而不是针对
路由的(当然,命名并不重要,只是语义)

因此,在导航循环中触发的最后一个事件是
scrollEvent
,它不包含键
url
,因此导致未定义

我认为您需要通过执行以下操作来检查触发的事件类型是否为
NavigationEnd

this.route.events.subscribe((event)=>{
    if(event instanceof NavigationEnd){
      this.path = (event as any).url;
    }
})
编辑

下面的日志可以理解我的意思,最新的事件(或者实际上可能是更大应用程序中的任何事件)可能不包含
url
属性:
在我跟踪了您的代码之后,发生这种情况是因为订阅是针对
事件的,而不是针对
路由的(当然,命名并不重要,只是语义)

因此,在导航循环中触发的最后一个事件是
scrollEvent
,它不包含键
url
,因此导致未定义

我认为您需要通过执行以下操作来检查触发的事件类型是否为
NavigationEnd

this.route.events.subscribe((event)=>{
    if(event instanceof NavigationEnd){
      this.path = (event as any).url;
    }
})
编辑

下面的日志可以理解我的意思,最新的事件(或者实际上可能是更大应用程序中的任何事件)可能不包含
url
属性:

这是
AppComponent
组件的模板还是另一个组件的模板?@Danziger Yep,当我注释掉那段代码,一切开始工作时,是
AppComponent
组件的模板还是另一个组件的模板?@Danziger Yep,当我注释掉那段代码,一切都开始工作时,感谢您提供了信息丰富的答案。。但它似乎仍然不起作用。我完全删除了
route.events.subscribe()
代码块,似乎仍然面临这个问题。现在我所拥有的只是一个明确的定义哦,伙计,我不确定。它工作正常但只是抛出一个控制台错误吗?如果是,您可以使用
path?.includes()
?如果你能分享更多的代码,可能会有什么遗漏哦,它似乎在工作。但是现在我发现
找不到名称“NavigationEnd”。
这只是typescript缺少导入,请从“@angular/Router”添加
导入{Router,NavigationEnd}
感谢您提供的信息性答案。。但它似乎仍然不起作用。我完全删除了
route.events.subscribe()
代码块,似乎仍然面临这个问题。现在我所拥有的只是一个明确的定义哦,伙计,我不确定。它工作正常但只是抛出一个控制台错误吗?如果是,您可以使用
path?.includes()
?如果你能分享更多的代码,可能会有什么遗漏哦,它似乎在工作。但是现在我发现
找不到名称“NavigationEnd”。
那只是typescript缺少导入,请从“@angular/Router”添加
导入{Router,NavigationEnd}