簡體   English   中英

NullInjectorError: StaticInjectorError(DynamicTestModule)[ToastrService -> InjectionToken ToastConfig]: 在 tslint angular 8

[英]NullInjectorError: StaticInjectorError(DynamicTestModule)[ToastrService -> InjectionToken ToastConfig]: in tslint angular 8

當我在 angular 8 項目中運行單元測試時,我在 ngx-toastr 中發現了一個錯誤

NullInjectorError: StaticInjectorError(DynamicTestModule)[ToastrService -> InjectionToken ToastConfig]:

我在spec.ts文件中導入了requierd模塊,並且我還在app.module.ts中聲明了forRoot()

  beforeEach(async(() => {
TestBed.configureTestingModule({
  imports: [MatTabsModule,
    ReactiveFormsModule,
    MatTooltipModule,
    HttpClientTestingModule,
    RouterTestingModule,
    ToastrModule
  ],
  declarations: [CommunicationComponent],
  providers: [
    ToastrService,
  ]
})
  .compileComponents();

}));

從 'ngx-toastr' 導入 { ToastrModule };

beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [ToastrModule.forRoot()],

    })
      .compileComponents();
  }));

在導入中添加 ToastrModule.forRoot() 如上所示,您的錯誤可能會得到解決

這些方法對我不起作用。 我必須為提供者提供我自己的價值。 這對我有用:

首先,我聲明了我自己的“虛擬”實現:

const toastrService = {
    success: (message?: string, title?: string, override?: Partial<IndividualConfig>) => { },
    error: (message?: string, title?: string, override?: Partial<IndividualConfig>) => { }
  };

然后,我在提供者部分指出了要使用的值:

providers: [
        ...
        { provide: ToastrService, useValue: toastrService },
      ],

像下面這樣更改提供者

providers: [
  {provide: ToastrService, useClass: ToastrService}
]

您可能忘記添加.forRoot()

只需在 module.ts 中添加這種方式

ToastrModule.forRoot()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM