Angular 6注入服务无法解决

时间:2018-10-04 08:51:28

标签: angular dependency-injection

我已经使用两个服务'./src/lib/auth.service.ts'(AuthService)和'./src/lib/error.service.ts'(ErrorService)构建了Angular 6库'auth'。

现在我想在我的Angular 6应用程序中同时使用这两项服务-两者都注入到另一个服务中,例如:

constructor(
    private http: HttpClient,
    private authService: AuthService,
    private errorService: ErrorService
  ) {}

但是当我尝试编译应用程序时,会发生以下错误:

Module not found: Error: Can't resolve 'auth/lib/error.service' in 'C:\Projects\MyProject\src\app\services\data'

我可以导入ErrorService而不会出现任何问题,并且VSCode不会显示任何错误。只有当我尝试编译它时。

库和应用程序使用相同版本的Angular 6构建。 我还向error.service.ts添加了public_api.ts,并在auth.module.ts中提供了它。

AuthModule被导入到app.module.ts

...
import { AuthModule } from './auth';

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
    AuthModule
  ],
  providers: [
    ...
  ],
  entryComponents: [EditDialogComponent],
  bootstrap: [AppComponent]
})
export class AppModule {
  ...
}

这是文件public_api.ts

/*
 * Public API Surface of auth
 */

export * from './lib/auth.service';
export * from './lib/error.service';
export * from './lib/auth.component';
export * from './lib/auth.module';

文件error.service.ts(仍然为空):

import { Injectable } from '@angular/core';

    @Injectable()
    export class ErrorService {

    }

我对AuthService没有任何问题。 我在做什么错了?

1 个答案:

答案 0 :(得分:1)

AuthService和ErrorService应该在您的第三项服务之前启动。因此请在应用程序模块(根)中提供它们,然后它们将成为单例。

this link