代码之家  ›  专栏  ›  技术社区  ›  techno

来自sessionStorage的令牌在应用中为空。组成部分html

  •  0
  • techno  · 技术社区  · 3 年前

    我正在检查应用程序中是否存在令牌。组件使用以下代码

    应用程序。组成部分html

    <div class="container-scroller">
       <div *ngIf="token">
          <app-navbar></app-navbar>
          <div class="container-fluid page-body-wrapper">
             <app-sidebar></app-sidebar>
             <div class="main-panel">
                <div class="content-wrapper">
                   <router-outlet></router-outlet>
                </div>
                <app-footer></app-footer>
             </div>
          </div>
       </div>
       <div *ngIf="token==null">
          <app-login></app-login>
       </div>
    </div>
    

    应用程序。组成部分ts

    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.scss']
    })
    export class AppComponent {
      title = 'star-admin-angular';
      ngOnInit() {
        let token = sessionStorage.getItem('token');
      }
    }
    

    当我使用ts文件进行调试时,令牌不是空的。但在html文件中,令牌似乎为空,因为登录页面始终显示,即使有令牌。

    1 回复  |  直到 3 年前
        1
  •  1
  •   Ricky Mo    3 年前

    因为你没有申报 token 作为 AppComponent 班那只是一个 let 内部变量 ngOnInit(){} 范围你应该写:

    import { Component } from '@angular/core';
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.scss']
    })
    export class AppComponent {
      title = 'star-admin-angular';
      token? : any = undefined;
      ngOnInit() {
        this.token = sessionStorage.getItem('token');
      }
    }
    
    推荐文章