Angular 6变量在定义时未定义

时间:2018-09-11 21:00:50

标签: 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)=>{
      this.path = (route as any).url;
    })
    this.getFeatured();
  }
}

导致模板错误的声明:

*ngIf="!path.includes('/reports') && !path.includes('/reviews') && !path.includes('/users')"

我不认为这是异步问题,因为它已将其登录到控制台:

enter image description here

1 个答案:

答案 0 :(得分:3)

在我跟踪了您的代码之后,发生这种情况是因为仅订阅是针对cloudml_deploy("model", name = "keras_model")而不是event(当然,命名并不重要,只是语义)。

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

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

NavigationEnd

修改

这里是了解我确切含义的日志,最新事件(或者实际上可能是较大应用程序中的任何事件)可能不包含this.route.events.subscribe((event)=>{ if(event instanceof NavigationEnd){ this.path = (event as any).url; } }) 属性: enter image description here