简体   繁体   English

仅当用户登录角度6时如何显示导航栏

[英]How to show navbar only when user is logged on angular 6

I am having problem checkin if user is logged. 如果用户已登录,我在签入时遇到问题。 The navbar behavior right now is that it hides since It can't get the user data after a few minutes. 导航栏现在的行为是隐藏,因为几分钟后无法获取用户数据。 The first time works perfectly but after a few minutes dissapear. 第一次运行完美,但几分钟后消失。 Maybe I'm implemeting wrong the observable. 也许我实现了可观察到的错误。 Can anyone give me a hand? 有人可以帮我吗? thank you! 谢谢!

navbar.component.ts navbar.component.ts

  export class NavbarComponent implements OnInit {
  loggedUser: Object = {}
  isLogged: boolean = false
  imageUrl: string =  ''
  constructor(private router: RouterModule, private route: Router, private authService: AuthService) {


  }

  ngOnInit() {
    this.imageUrl = env.amazon_images_s3
    const user = AuthService.getUser()
    if(user) {
      this.authService.userLoggedIn$.subscribe(data => { 
        this.isLogged = true
        this.loggedUser = data
      })
    }
  }

auth.service 认证服务

 export class AuthService {
      private static CURRENT_USER = 'currentUser'
      private userLoggedIn = new Subject<any>()
      private userLoggedOut = new Subject<any>()
      userLoggedIn$ = this.userLoggedIn.asObservable()
      userLoggedOut$ = this.userLoggedOut.asObservable()
      constructor(private _apiService: ApiService) { }

      public isAuthenticated(): any {
        const user = JSON.parse(localStorage.getItem(AuthService.CURRENT_USER))
        if (user) {
          return user.token.access_token !== null;
        }

        return false
      }

      logIn(username: string, password: string) {
        return this._apiService.post('user/login', { username: username, password: password, auth_type: 'ADMIN' })
          .pipe(map((data) => {
            if (data.token_info) {
              localStorage.setItem(AuthService.CURRENT_USER, JSON.stringify({ "token": data.token_info, "user": data.user }));
              this.userLoggedIn.next(data.user)
            }
            return data;
          }))
      }

navbar.html navbar.html

<mat-toolbar class="nav-bar" *ngIf="isLogged">
<div class="navbar-menu" *ngIf="route.url === '/map'">
    <i class="material-icons">
        menu
    </i>
</div>
<div class="logo" [routerLink]="['map']">
    <img class="mobile" src="assets/images/logo-mobile.png" alt="">
    <img class="desktop" src="assets/images/nav-logo.png" alt="">
</div>
<div class="links" *ngIf="route.url == '/map'">
    <div class="link" [routerLink]="['dashboard']">
        <app-svg-icon [goToPath]="'assets/images/administrator.svg'"></app-svg-icon>
        <span>Administrador</span>
    </div>
    <div class="link" [routerLink]="['reports']">
        <app-svg-icon [goToPath]="'assets/images/reports.svg'"></app-svg-icon>
        <span>Reportes</span>
    </div>
    <div class="link" [routerLink]="['map/offline']">
        <app-svg-icon [goToPath]="'assets/images/offline.svg'"></app-svg-icon>
        <span>Mapa Offline</span>
    </div>
</div>
<div class="nav-bar-dropdown" [class.active]="active" (click)="active = !active">
    <div class="name">
        {{loggedUser.first_name}}
        <i class="material-icons">
            keyboard_arrow_down
        </i>
    </div>
    <div class="dropdown">
        <div class="dropdown-avatar">
            <img src="{{loggedUser.avatar ? imageUrl + loggedUser.avatar : null}}" alt="">
        </div>
        <div class="dropdown-text">
            <div class="name">{{loggedUser.first_name}} {{loggedUser.last_name}}</div>
            <div class="id">ID {{loggedUser.id}}</div>
            <div class="rol">{{'users.' + loggedUser.groups.name | translate }}</div>
        </div>
        <div class="logout" (click)="onLogOut()">{{ 'navbar.logout' | translate }}</div>
    </div>
</div>
<div class="setting" *ngIf="route.url == '/map'">
    <app-svg-icon [goToPath]="'assets/images/settings.svg'" [routerLink]="['map/settings']"></app-svg-icon>
</div>

我想问题不在于可观察的,因为您最初获得的是结果,而是路线,请尝试使用'==='

 <div class="navbar-menu" *ngIf="route.url === '/map'">

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Angular 2-仅在用户登录时在导航栏上显示某些元素 - Angular 2 - Only display certain elements on navbar when user is logged in 仅当用户已在Angular 2+中登录或注销时,如何显示元素? - How do you show elements only when user is either logged in or logged out in Angular 2+? 如何仅在用户登录时完全重新加载 Angular 组件? - How to fully reload an Angular component only when user is logged in? 登录时的角度导航栏更改 - Angular Navbar change when Logged in 如何在 angular 中不显示登录用户的登录页面 - How not to show the login page for a logged in user in angular 登录-Angular 8时隐藏可选的导航栏菜单 - Hide optional navbar menus when Logged In - Angular 8 当用户登录,注销或用户更改时,如何在角流星中捕获事件? - How to catch up an event in angular-meteor when a user logged in, logged out or the user changes? 仅在用户登录* ngIf时显示锚点 - Show an anchor only if user is logged in *ngIf Angular,如何告诉用户他们已登录或未登录? - Angular, how to tell user they are logged in or not in? Angular - 如何在Laravelbackend中仅使用其用户ID登录用户视图中的相关数据 - Angular - How to make logged in user view only related data with his user ID in Laravelbackend
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM