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}