Я пытаюсь получить текущий и предыдущий URL-адрес компонента и обновить переменную компонента на основе URL-адреса. Когда я отлаживаю приложение, кажется, что значение компонентов обновляется, но на самом деле это не так.
Суть моего кода ниже:
dashboard.component.ts
show = true;
constructor(private heroService: HeroService, private router: Router) {}
ngOnInit() {
this.getHeroes();
this.router.events
.pipe(
filter(evt => evt instanceof NavigationEnd),
pairwise(),
take(1)
)
.subscribe((events: [NavigationEnd, NavigationEnd]) => {
console.log("Prev", events[0].url);
console.log("Cur", events[1].url);
if (events[1].url === "/dashboard" && events[0].url === "/detail/12") {
console.log("Came here");
this.show = false;
}
});
}
dashboard.component. html
{{show}}
Пожалуйста, найдите пример стекаблица моего кода:
https://stackblitz.com/angular/qvvrbgrmmda?file=src%2Fapp%2Fdashboard%2Fdashboard.component.html
Шаги для воспроизведения: Перейдите на любую страницу героя, щелкнув по имени героя, и go вернитесь к компоненту панели мониторинга, нажав кнопку «Назад». Наблюдайте в консоли.
Примечание: Импорт игнорируется, все операторы импорта обрабатываются правильно
Ожидаемый результат: шаблон должен отображать «false» после обновления переменной компонента.
Фактический результат: шаблон показывает «true» без обновления переменной, даже если условие истинно.
Все мои услуги providedIn: 'root'
и ChangeDetectionStrategy
Default
, но я не Не думаю, что это повлияет на что-либо.
Я пробовал changeDetector.detectChanges();
, changeDetector.markForCheck();
и ngZone.run();
. Но, похоже, ничего не работает. Пожалуйста, подскажите мне, что я делаю не так. Заранее спасибо за любую помощь.