首页 > 解决方案 > StaticInjectorError(AppModule) Service -> Angular 中的 InjectionToken 错误

问题描述

如何解决以下错误

 AppComponent.html:9 ERROR Error: StaticInjectorError(AppModule)[OzaAuthService -> InjectionToken oza.config.angular]: 
  StaticInjectorError(Platform: core)[OzaAuthService -> InjectionToken oza.config.angular]: 
    NullInjectorError: No provider for InjectionToken oza.config.angular!

AuthService.ts :在 AuthService 中调用自定义“oza 包”。

import { OzaAuthService } from '@oza/oza-angular';

@Injectable({
  providedIn: 'root'
})

export class AuthService {
  _accessToken: string;
  constructor(private ozaAuthService: OzaAuthService) {
    console.log('ozaAuthService');
    this.$getAccessToken().subscribe(token => {
      this._accessToken = token;
    });
  }

  public getAccessToken(): string {
    return this._accessToken;
  }

在 App.module.ts 中导入 oza 包并在提供程序中添加OzaAuthService但仍然出现错误。

import { OzaAuthService} from '@oza/oza-angular';

 @NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
   imports: [
    BrowserModule,
    NgbModule,
    // router
    RouterModule.forRoot(routes),
    StoreModule.forRoot({}),
    })
  ],
  exports: [
    HttpClientModule
  ],
  providers: [
   **OzaAuthService**
  ],
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
  bootstrap: [AppComponent]
})
export class AppModule {}

标签: angularangular-ui-routernode-modules

解决方案


查看错误,似乎OzaAuthService需要一个InjectionToken名为oza.config.angular来配置服务。您还需要InjectionToken在 AppModule 中提供此信息。请参阅包的文档或尝试在服务的源代码中找到 InjectionToken 的导出名称。


推荐阅读