0
サービスを動的に注入する際に問題があります。角2 +パッケージでサービスを動的に注入/交換する
プロジェクトを実行しているとき、私はエラーを得た// NPM Package 1:
@Injectable()
export abstract class BaseService { ... }
@Injectable()
export class ServiceA extends BaseService { ... }
@Injectable()
export class ServiceB extends BaseService { ... }
// NPM Package 2:
// nav.module.ts
@NgModule({
imports: [ ... ],
declarations: [
NavComponent
],
exports: [
NavComponent
],
providers: []
})
export class NavModule { }
// nav.component.ts
@Component({
selector: 'app-nav',
...
})
export class NavComponent {
constructor(private baseService: BaseService) { ... }
}
// main project
// app.module.ts:
@NgModule({
declarations: [
AppComponent
],
imports: [
NavModule
],
providers: [
{provide: BaseService, useClass: ServiceB }
],
bootstrap: [AppComponent]
})
export class AppModule { }
// app.component.ts
@Component({ ... })
export class AppComponent implements OnInit {
constructor(private baseService: BaseService) { }
...
}
// app.component.html
<app-nav></app-nav>
:
Error: No provider for BaseService!
私が直接でNPMパッケージ2のコードが含まれている場合、サービスがNPMパッケージ2.2
に注入されていませんメインプロジェクトは問題ありません。 BaseServiceはServiceBとして注入されます。
何が間違っている可能性がありますか? NPMパッケージを生成するためにng-packagr(https://github.com/dherges/ng-packagr)を使用しました。
最小限の複製を共有できますか? – yurzui