Я хочу всегда перенаправлять на домашнюю страницу - PullRequest
0 голосов
/ 28 мая 2019

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

Прямо сейчас, если я нахожусь на определенном маршруте, оно перезагрузитroute.

Есть ли способ заставить домашнюю страницу обновляться под углом?

Ответы [ 2 ]

2 голосов
/ 28 мая 2019

Одним из подходов может быть добавление защиты маршрута, которая проверяет некоторую глобальную переменную.

Например; Сначала создайте сервис:

import { Injectable } from '@angular/core';
@Injectable({
  providedIn: 'root',
})
export class MyRedirectCheckService {
  redirectToHomePage = true;
}

Создайте охрану маршрута, который использует сервис, что-то вроде этого:

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
@Injectable({
  providedIn: 'root',
})
export class checkFirstLoadGuard implements CanActivate {
  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot, 
    myRedirectCheckService: MyRedirectCheckService ): boolean {
    return myRedirectCheckService.redirectToHomePage;
  }
}

Затем добавьте canActivate route guard к вашему маршрутизатору:

const routes: Routes = [
          { path: 'main', component: MainComponent },
          { path: 'child', component: ChildComponent, canActivate: [CheckFirstLoadGuard]},
          { path: '**', component: AdminDashboardComponent }
        ]
];

В конструкторе основного компонента не забудьте переключить значение:

constructor(myRedirectCheckService: MyRedirectCheckService) {
  myRedirectCheckService.redirectToHomePage = false;
}

Это только один подход, и код не тестируется в контексте реального приложения.

1 голос
/ 28 мая 2019

использование

window.location = '' 

вместо

this.router.navigate([''])

для принудительного обновления

если используется внутренний элемент, используйте атрибут href вместо атрибута routerLink

...