将多个服务注入角度库

问题描述 投票:0回答:2

我制作了一个角度库,我正在尝试将几个服务和常量文件导入库中。但是,当我构建时,出现错误,即服务和常量文件应位于库的“ rootDir”下。关于如何将主应用程序src文件夹下的这些文件导入库并成功构建,是否有任何解决方案/方法?

angular angular-library
2个回答
0
投票

如果要从应用程序向库中注入某些内容,请按照以下方式进行:

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 { }

0
投票

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

@Injectable({providedIn: 'root'})
© www.soinside.com 2019 - 2024. All rights reserved.