#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#activatedroute4. Возвращает это: 0: UrlSegment parameterMap: (…) параметры: {} путь: «»
5. @KevinPorche Вы можете попробовать
toString()
при ответе. это даст вам маршрут в строковом формате. вот так:res.toString()
. Вот ссылка angular.io/api/router/UrlSegment