Все файлы, на которые ссылается библиотека, должны содержаться в каталоге project\my-library\src
(или извлечены из другого модуля) для правильной сборки библиотеки.
Не думаю, что вы захотите включить файл среды прямо в вашу библиотеку.Во время сборки приложения этот файл среды будет отключен в приложении.Вместе с библиотекой вы создаете ее, а затем импортируете в уже созданное приложение, так что файл не будет надлежащим образом отключен.
Лучшее из известных мне решений - создать Token
в вашей библиотеке и экспортируйте его из API библиотеки.Затем в приложении, использующем библиотеку, вы должны предоставить среду через контейнер DI, использующий этот токен.
Например, в вашей библиотеке вы должны сделать что-то вроде следующего:
project\my-library\src\lib\environment-token.ts
import { InjectionToken } from '@angular/core';
export let ENVIRONMENT_TOKEN = new InjectionToken('environment');
project\my-library\src\public_api.ts
export * from './lib/environment-token.ts'
project\my-library\src\lib\component.ts
import {
Component,
Inject
} from '@angular/core';
import {
ENVIRONMENT_TOKEN
} from './environment-token';
@Component({
selector: 'aa-component',
template: `
})
export class Component {
constructor(@Inject(ENVIRONMENT_TOKEN) private environment: any) {
}
}
И тогда в вашем приложении вы сделаете что-то вроде следующего:
import {
NgModule
} from '@angular/core';
import {
YOUR_MODULE,
ENVIRONMENT_TOKEN
} from 'YOUR_LIB_NAME';
import {
environment
} from './environments/environment';
import {
AppComponent
} from './app.component.ts'
@NgModule({
declarations: [
AppComponent
],
imports: [
YOUR_MODULE
providers: [
{ provide: ENVIRONMENT_TOKEN, useFactory: () => environment }
],
bootstrap: [AppComponent]
})
export class AppModule {}