我想总是重定向到主页

时间:2019-05-28 02:52:39

标签: angular angular-routing

我正在测试一个应用程序,并且我在js中所做的每个更改都希望它加载主页。

现在,如果我在特定路线上,它将对该路线进行热装。

有没有一种方法可以强制主页以角度刷新?

2 个答案:

答案 0 :(得分:2)

一种方法可能是添加一个检查某些全局变量的路由防护。

例如;首先创建服务:

 - rpc SayHello(HelloRequest) returns (HelloResponse) {...}
 - rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse) {...}
 - rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse) {...}
 - rpc BidiHello(stream HelloRequest) returns (stream HelloResponse) {...}

创建使用该服务的路由防护,如下所示:

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

然后将canActivate路由防护添加到路由器:

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;
  }
}

在您的主要组件构造函数中,请确保切换值:

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

这只是一种方法,并且未在实际应用程序的上下文中测试代码。

答案 1 :(得分:1)

使用

window.location = '' 

代替

this.router.navigate([''])

强制刷新

如果使用内部元素,请使用href属性而不是routerLink属性