Условие углового компонента отображается только при перезагрузке страницы

#angular #angular-routing #angular7

#angular #angular-маршрутизация #angular7

Вопрос:

На моем app.component.html У меня есть условие для отображения компонента, если я нахожусь на определенном маршруте:

app.component.html

 <div *ngIf="router.url === '/home'">
  <app-slider></app-slider>
</div>
  

app.component.ts

 import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
...
constructor(public router: Router) {}
  

Это работает, когда страница загружается в первый раз, но когда я перехожу на другой маршрут, а затем возвращаюсь к исходному маршруту, он не загружается, поэтому мне приходится перезагружать страницу, чтобы компонент отображался.

Как я могу это исправить?

Комментарии:

1. не могли бы вы подробнее рассказать о своем требовании

2. В принципе, <приложение-слайдер></app-slider> отображается только тогда, когда я нахожусь на домашнем маршрутизаторе, но когда я перехожу на другой маршрут, а затем нажимаю на домашний маршрутизатор, условие не работает. Если работает только при перезагрузке страницы

Ответ №1:

вы можете проверять активированный маршрут каждый раз.

 import { ActivatedRoute } from '@angular/router';
constructor(public activatedRoute: ActivatedRoute) {
    this.activatedRoute.url.subscribe(res => {
    // array of route parts here
    });
}
  

Комментарии:

1. Что вы имеете в виду, говоря о: // массиве частей маршрута здесь?

2. console.log (res); пожалуйста, проверьте выходные данные.

3.Возможно, было бы немного полезнее также ссылаться на документы, поскольку тогда @KevinPorche смог бы исследовать, что res является наблюдаемым типом UrlSegment[] angular.io/api/router/ActivatedRoute#activatedroute

4. Возвращает это: 0: UrlSegment parameterMap: (…) параметры: {} путь: «»

5. @KevinPorche Вы можете попробовать toString() при ответе. это даст вам маршрут в строковом формате. вот так: res.toString() . Вот ссылка angular.io/api/router/UrlSegment