如何从 Angular 组件获取环境为 "Library"?
How to get environment from Angular Component as "Library"?
我正在创建 Angular 库,但遇到一些关于环境的问题。
我生成了一个应用程序(父)和库(子)。
如何从库中定义的子组件获取环境(它在父项下定义)。
我生成了这样的应用程序。
ng version
# Angular CLI: 8.0.1
# Node: 10.15.3
# OS: darwin x64
# Angular: 8.0.0
ng new app-parent
cd app-parent
ng generate library lib-child
这样的项目结构。
$ tree -L 2
.
├── README.md
├── angular.json
├── browserslist
├── e2e
│ ├── protractor.conf.js
│ ├── src
│ └── tsconfig.json
├── karma.conf.js
├── package.json
├── projects
│ └── lib-child # <- wanna get environment from here!!
├── src
│ ├── app
│ ├── assets
│ ├── environments
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.sass
│ └── test.ts
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.spec.json
├── tslint.json
└── yarn.lock
我试过导入为相对路径,例如... import { environment } from '../../../src/environment';
但此解决方案不能使用其他应用程序。
图书馆应该使用一些环境和应用程序。
我正在寻找一种方法来喜欢这个。
import { environment } from '@angular/core';
environment.production #=> true/false
我认为将环境传递给副项目不是一个好做法,
而是尝试通过在项目模块上创建静态方法将其传递到主应用程序:
import { environment } from '../../../src/environment';
...
@NgModule({
imports: [
BrowserModule,
MyProjectModule.forRoot({
environment: environment
}),
...
]})
并且在项目模块中:
export class MyProjectModule {
static forRoot(environment): ModuleWithProviders {
// User envirnment here or decalare an injection token for the environment
console.log(environment);
return {
ngModule: SampleModule,
providers: [{provide: 'environment', useValue: environment}]
};
}
}
我正在创建 Angular 库,但遇到一些关于环境的问题。 我生成了一个应用程序(父)和库(子)。 如何从库中定义的子组件获取环境(它在父项下定义)。
我生成了这样的应用程序。
ng version
# Angular CLI: 8.0.1
# Node: 10.15.3
# OS: darwin x64
# Angular: 8.0.0
ng new app-parent
cd app-parent
ng generate library lib-child
这样的项目结构。
$ tree -L 2
.
├── README.md
├── angular.json
├── browserslist
├── e2e
│ ├── protractor.conf.js
│ ├── src
│ └── tsconfig.json
├── karma.conf.js
├── package.json
├── projects
│ └── lib-child # <- wanna get environment from here!!
├── src
│ ├── app
│ ├── assets
│ ├── environments
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.sass
│ └── test.ts
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.spec.json
├── tslint.json
└── yarn.lock
我试过导入为相对路径,例如... import { environment } from '../../../src/environment';
但此解决方案不能使用其他应用程序。
图书馆应该使用一些环境和应用程序。
我正在寻找一种方法来喜欢这个。
import { environment } from '@angular/core';
environment.production #=> true/false
我认为将环境传递给副项目不是一个好做法,
而是尝试通过在项目模块上创建静态方法将其传递到主应用程序:
import { environment } from '../../../src/environment';
...
@NgModule({
imports: [
BrowserModule,
MyProjectModule.forRoot({
environment: environment
}),
...
]})
并且在项目模块中:
export class MyProjectModule {
static forRoot(environment): ModuleWithProviders {
// User envirnment here or decalare an injection token for the environment
console.log(environment);
return {
ngModule: SampleModule,
providers: [{provide: 'environment', useValue: environment}]
};
}
}