javascript - 如何在 Angular 8 中隐藏标题组件的导航栏按钮以防止路由?

标签 javascript angular typescript routes angular8

如何在导航到登录页面时隐藏/显示导航栏按钮。

Ex- 在我的应用程序组件中,我有页眉组件、路由器 socket 和页脚组件 在我的标题组件中,我有大约 5 个导航按钮,例如 - 登录、注册、关于、联系我们等。现在,我想要的是,如果有人单击“登录”,那么登录表单就在那里,当有人登录并移动到仪表板页面时,标题就会出现不应包含登录和注册选项。

Ex-再次通知标题页。下面是我的代码 -

AppComponent.html

 <app-header></app-header>

 <router-outlet></router-outlet>

 <app-footer></app-footer>

app-routing.module.ts

const routes: Routes = [
      { path: '', component: HomeComponent },
      {path:'registration', component: RegistrationComponent},
      {path: 'login', component: LoginComponent},
      {path: 'dashboard', component: DashboardComponent},
      {path: 'header', component: HeaderComponent},
    ];

HeaderComponent.html

<div class="navbar-nav ml-auto">

            <a class="nav-item nav-link" routerLink="/login"><h4>Login</h4></a>
            <a class="nav-item nav-link" routerLink="/registration"><h4>Register</h4></a>
            <a class="nav-item nav-link" routerLink="/about"><h4>About</h4></a>
            <a class="nav-item nav-link" routerLink="/dashboard"><h4>Dashboard</h4></a>

 </div>

 So, How can i hide Login, Registration option once logged in successfully

最佳答案

有很多方法可以实现。 这取决于您的登录机制。 假设用户已登录,并且您正在存储用户的一些凭据(JWT token 或其他一些属性)。 通常它存储在您的本地存储中,以便于引用。

所以,答案基本上是 -> 所有导航链接上的 user *ngIf。

在 html 中。

<a *ngIf="!loggedIn()" class="nav-item nav-link" routerLink="/login"><h4>Login</h4></a>
<a *ngIf="!loggedIn()" class="nav-item nav-link" routerLink="/registration">Register</h4></a>

在您的 .ts 文件中。

loggedIn() {
           return localStorgae.getItem("some credential you stored while user logged In") ? true : false;
}

此外,如果您使用类似上述解决方案的解决方案,请不要忘记在用户注销时从本地存储中删除这些值。

所以,在登录期间

login() {
  // all your authentication code.
  localStorage.setItem("loggedIn", "value");
}

//无论何时需要检查登录情况,都可以使用 localStorage.getItem("loggedIn");

关于javascript - 如何在 Angular 8 中隐藏标题组件的导航栏按钮以防止路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61014734/

相关文章:

javascript - setInterval启动我的页面在生成30+数据时就卡顿了

javascript - 是否可以为对象赋值以触发 Action /方法?

angular - 如何在不使用 Angular Material 中的 ngModel 的情况下设置双向绑定(bind)

reactjs - 我正在尝试使用 Tauri 1.2、Rust、React 和 Typescript 创建一个新窗口。我面临一些问题

javascript - 这个正则表达式如何实现从大写到小写的交换,反之亦然?

javascript - $(li).width() 返回值包括填充?

javascript - 如何在包含 HTML 的变量中绑定(bind) blob?

angular - TS 编译器为 node_modules\@angular\platform-b​​rowser\src\browser\directory 中的 transfer_state.d.ts 文件抛出错误

css - 在 ngfor 循环中禁用/启用按钮

angular - 加载组件后滚动到 Material Accordion 中的特定扩展面板