typescript 如何在HttpInterceptor中使用NzMessageService

jxct1oxe  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(179)

当我在Angular 中使用HttpInterceptor中的NzMessageService时,我得到以下错误:

login.component.ts:116 NullInjectorError: R3InjectorError(Y)[InjectionToken HTTP_INTERCEPTORS -> [object Object] -> he -> rt -> rt -> rt]: 
  NullInjectorError: No provider for rt!
    at Mu.get (core.mjs:8177:27)
    at Kd.get (core.mjs:8604:33)
    at Kd.get (core.mjs:8604:33)
    at Kd.get (core.mjs:8604:33)
    at Tc (core.mjs:4761:33)
    at Object.Wo (core.mjs:4765:42)
    at he.ɵfac [as factory] (ng-zorro-antd-message.mjs:119:107)
    at Kd.hydrate (core.mjs:8705:35)
    at Kd.get (core.mjs:8593:33)
    at Tc (core.mjs:4761:33)

我拦截器.服务.ts代码是:

@Injectable()
export class InterceptorService implements HttpInterceptor {
  constructor(private message: NzMessageService) {
  }

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(req).pipe(catchError((err) => {
      this.message.create("error", "error message", {
        nzDuration: 4000
      });
      return throwError(err);
    }));
  }
}

我应用程序模块几乎是:

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    NzMessageServiceModule
  ],
  providers: [
    NzMessageService,
    {provide: HTTP_INTERCEPTORS, useClass: InterceptorService, deps: [NzMessageService], multi: true},
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

如何解决此问题?

ds97pgxw

ds97pgxw1#

您必须在您的app.module.ts中导入以下模块,并且不需要NzMessageServiceModule和NzMessageService。

import { NzMessageModule } from 'ng-zorro-antd/message';

相关问题