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

角形5路由器插座,JWT

  •  1
  • eixcs  · 技术社区  · 7 年前

    我需要将令牌属性添加到我的组件中,如下所示:

    <div>
      <app-authentication [(token)]='token'></app-authentication>
    </div>
    

    但是路由处理我的组件,所以我不知道如何实现

    [(token)]='token'
    

    部分

    当前我的应用程序。组成部分html如下所示:

    <app-header></app-header>
    <div class="container">
        <router-outlet></router-outlet>
    </div>
    

    和应用程序路由。单元ts如下所示:

    import { NgModule, Input } from '@angular/core';
    import { Routes, RouterModule } from '@angular/router';
    import { ProjectListComponent } from './projects/project-list/project-list.component';
    import { ProjectsViewComponent } from './projects/projects-view/projects-view.component';
    import { AdminComponent } from './admin/admin.component';
    import { Headers } from '@angular/http';
    
    const routes: Routes = [
      {
        path: '',
        component: ProjectListComponent,
        pathMatch: 'full'
      },
      {
        path: 'admin',
        component: AdminComponent
      },
      {
        path: ':slug',
        component: ProjectsViewComponent
      }
    ];
    
    @NgModule({
      imports: [RouterModule.forRoot(routes)],
      exports: [RouterModule],
      providers: []
    })
    export class Wpng2RoutingModule {}
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Tomasz Kula    7 年前

    您应该使用依赖项注入来提供令牌。你可以这样设置。

    应用程序。单元ts

    import { InjectionToken } from '@angular/core';
    
    export const JWT = new InjectionToken<string>('JWT');
    
    @NgModule({
      imports: [
        ...
      ],
      declarations: [AppComponent],
      bootstrap: [AppComponent],
      providers: [
        AuthService,
        {
          provide: JWT,
          useFactory: (auth: AuthService) => authService.jwt,
          deps: [AuthService],
        },
      ],
    })
    export class AppModule {}
    

    任何组成部分ts

    import { Component, Inject } from '@angular/core';
    
    @Component({ selector: 'any' })
    export class AnyComponent {
       constructor(@Inject(JWT) public jwt: string) {
          // do something with the token
       }
    }