在angular 4项目中,当我从网址中删除#时。删除#后,我面临与页面刷新相关的问题

时间:2019-02-18 13:07:16

标签: angular angular4-router

当我使用以下代码从angular 4项目中删除#时。在app.module.ts文件中

imports: [
...
RouterModule.forRoot(routes, { useHash: true })  // remove second argument
]

和提供者

@NgModule({
.....
providers: [
  // Below line is optional as default LocationStrategy is 
PathLocationStrategy
{provide: LocationStrategy, useClass: PathLocationStrategy} 
 ]
})

使用此代码,我可以从网址中删除#。但是,当我刷新页面时,它将转到localhost:4200。以前(使用#,当我有刷新页面时)不会转到默认页面localhost:4200。如何在没有角度4的url中使用#的情况下处理此刷新错误

1 个答案:

答案 0 :(得分:1)

Add this in App component 

When refresh it will load app component ngOninit

get token or Return url values using router

      const id = this.route.snapshot.params['token'];
        const returnUrl = this.route.snapshot.params['returnUrl'];
        if (id && returnUrl) {
            const appUser = new AppUser();
            appUser.id = id;
            appUser.user = new UserInfo();
            this._storage.setObj('token', appUser);
            const encodedReturnUrl = decodeURIComponent(returnUrl);
            this._authService.populate(encodedReturnUrl);
        } else {
            this._authService.populate();
        }

身份验证服务是核心模块,它将在登录和刷新时进行身份验证。

在App组件中获取带有令牌值的当前用户详细信息。

 populate(returnUrl: string = '') {

      if (!returnUrl) {
              this.router.navigate([/login]);
                        } else {
       this.router.navigate([returnUrl]);
                        }
        }