Angular7:如何防止通过URL导航?

时间:2019-04-25 17:56:23

标签: angular

在我的Angular应用程序中,我希望用户只能从根URL( accessor: d => { d.DATE_FIELD ? d.DATE_FIELD return Moment(d.DATE_FIELD) .local() .format("DD-MM-YYYY hh:mm") : "" } )加载它。 如果用户在浏览器中尝试其他任何URL,则应立即将其重定向到根URL。

但是,应用中的类重定向(例如/应该可以正常工作

我该怎么做?

目前,我在this post中看到了this.router.navigate(['some-url']),但也许有更简单的技巧可以实现这一目标。

感谢您的想法。

2 个答案:

答案 0 :(得分:1)

您只需在您的app.module构造函数中添加一个router.navigateByUrl('/'),因此无论它们做什么,当应用程序加载它们时都可以。或者,您可以在sessionStorage中创建一个包含值的变量,例如sessionStorage.setItem('userOnline', true),然后在OnInit中检查该值。由于会话存储在选项卡关闭时被破坏,因此如果直接在浏览器导航栏上放置任何路由,则它们可以进行路由导航,但只有在它们已经加载了应用程序的情况下,才可以进行导航。应用加载会重定向到“ /”。

这个想法的任何变体,都可以并且应该起作用。一定要问我是否迷路了!

答案 1 :(得分:0)

接受的答案是不好的做法,恕我直言

您应该尝试以下路由模块:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

import { BarComponent } from '@components/bar.component';

const routes: Routes = [
  {
    path: '**',
    redirectTo: '',
  },
  {
    path: '',
    component: BarComponent,
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule],
})
export class FooRoutingModule { }