【问题标题】:Injecting multiple services into an angular library将多个服务注入 Angular 库
【发布时间】:2020-01-19 00:17:04
【问题描述】:

我已经制作了一个角度库,我正在尝试将几个服务和常量文件导入到库中。但是,当我构建时,我得到服务和常量文件应该在库的“rootDir”下的错误。对于我们如何将主应用程序 src 文件夹下的这些文件导入库并成功构建它,有什么解决方案/方法吗?

【问题讨论】:

  • 我没看懂你的问题,你能给我看一下你的代码吗?

标签: angular angular-library


【解决方案1】:

如果您想将应用程序中的某些内容注入到您的库中,请这样做:

export class LibraryModule {
  static forRoot(config: any): ModuleWithProviders {
    return {
      ngModule: LibraryModule,
      providers: [{provide: 'config', useValue: config}]
    };
  }
}

然后像这样使用注入的类:

@Component({
  selector: 'app-test',
  templateUrl: './app-test.component.html',
  styleUrls: ['./app-test.component.css']
})
export class AppTestComponent implements OnInit {
  constructor( @Inject('config') config) {
   // use the injected 
 }
}

如何在应用模块中启用注入:

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
@NgModule({
  imports:      [ BrowserModule, LibraryModule.forRoot(supposeToInject)  ],
  providers:    [ Logger ],
  declarations: [ AppComponent ],
  exports:      [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

【讨论】:

    【解决方案2】:

    您必须确保您的服务使用以下装饰

    @Injectable({providedIn: 'root'})
    

    【讨论】:

    • 欢迎来到 SO!也谢谢你回答问题!如果你解释一下你的代码 sn-p 做了什么来帮助人们理解,它可能会更有帮助。
    猜你喜欢
    • 2017-08-24
    • 2016-12-09
    • 1970-01-01
    • 2014-09-19
    • 2020-03-14
    • 1970-01-01
    • 2017-05-11
    • 2018-08-22
    • 2018-05-20
    相关资源
    最近更新 更多