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

В моем 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) {}

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

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


person Community    schedule 10.03.2019    source источник
comment
Можете ли вы объяснить немного больше о вашем требовании   -  person Sajeetharan    schedule 10.03.2019
comment
В основном ‹app-slider›‹/app-slider› появляется только тогда, когда я нахожусь на домашнем маршрутизаторе, но когда я перехожу на другой маршрут, а затем нажимаю на домашний маршрутизатор, условие не работает. Если работает только при перезагрузке страницы   -  person    schedule 10.03.2019


Ответы (1)


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

import { ActivatedRoute } from '@angular/router';
constructor(public activatedRoute: ActivatedRoute) {
    this.activatedRoute.url.subscribe(res => {
    // array of route parts here
    });
}
person Muhammad Abdullah Shafiq    schedule 10.03.2019
comment
Что вы имеете в виду под // массивом частей маршрута здесь? - person ; 10.03.2019
comment
console.log(разрешение); Пожалуйста, проверьте вывод. - person Muhammad Abdullah Shafiq; 10.03.2019
comment
Было бы немного полезнее также дать ссылку на документы, так как тогда @KevinPorche сможет выяснить, что res является наблюдаемым типом UrlSegment[] angular.io/api/router/ActivatedRoute#activatedroute - person Joel Balmer; 10.03.2019
comment
Это возвращает это: 0: UrlSegment parameterMap: (...) параметры: {} путь: - person ; 10.03.2019
comment
@KevinPorche Вы можете попробовать toString() в ответ. это даст вам маршрут в строковом формате. вот так: res.toString() . Вот ссылка angular.io/api/router/UrlSegment. - person Muhammad Abdullah Shafiq; 10.03.2019
comment
попробуй это res[0].toString() - person Muhammad Abdullah Shafiq; 10.03.2019