Угловая 6 переменная не определена, когда она определена - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть переменная в компоненте с предопределенным значением 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 голосов
/ 12 сентября 2018

Ну, после того как я проследил ваш код, это происходит потому, что просто подписка предназначена для event, а не route (Конечно, наименование не имеет значения, только семантика).

Таким образом, последнее событие, которое запускается в цикле навигации, это scrollEvent, который не содержит ключ url, что приводит к неопределенности.

Я думаю, вам нужно будет проверить тип события, которое должно иметь тип NavigationEnd, выполнив что-то вроде этого:

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

Редактировать :

Вот журнал, чтобы понять, что именно я имел в виду, последнее событие (или, фактически, может быть любым событием в более крупном приложении), может не содержать свойство url: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...