Внедрение нескольких сервисов в библиотеку angular - PullRequest
1 голос
/ 18 января 2020

Я создал библиотеку angular, и я пытаюсь импортировать пару файлов служб и констант в библиотеку. однако при сборке я получаю сообщение об ошибке, что файл services и constants должен находиться в «rootDir» библиотеки. Есть ли какое-либо решение / подход к тому, как мы можем импортировать эти файлы, которые находятся в папке sr c основного приложения, в библиотеку и успешно ее собрать?

Ответы [ 2 ]

0 голосов
/ 18 января 2020

U должен убедиться, что ваши услуги украшены ниже

@Injectable({providedIn: 'root'})
0 голосов
/ 18 января 2020

Если вы хотите внедрить что-то из приложения в вашу библиотеку, сделайте это следующим образом:

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