库的Angular CLI 6.x环境文件

flow3r

我已经使用新的CLI 6.x创建了一个库。我还在其中创建了一个Angular服务,我想在我的开发和生产环境中使用不同的URL。因此,我在库文件夹中创建了一个environment.tsenvironment.prod.ts文件。

//dev
export const environment = {
  production: false,
  url: 'dev-url'
};

//prod
export const environment = {
  production: true,
  url: 'prod-url'
};

我还向angular.json文件添加了“ fileReplacements”属性

"configurations": {
  "production": {
    "fileReplacements": [{
      "replace": "projects/tk-shared/src/environments/environment.ts",
      "with": "projects/tk-shared/src/environments/environment.prod.ts"
    }],
    "project": "projects/tk-shared/ng-package.prod.json"
  }
}

ng build tk-shared使用作品编译库并使用dev设置,但是使用进行编译时ng build --prod tk-shared出现以下错误:

Schema validation failed with the following errors: Data path "" should NOT have additional properties(fileReplacements).

我的提示是,原因是在中tk-shared具有projectType: "library"属性angular.json
无论如何,是否可以在库中使用环境文件?

flow3r

谢谢@R。Richards为我指出了正确的解决方案!这两个来源帮助我弄清楚了如何正确进行注入:LINK1LINK2

所以我做了...

创建了一个InjectionToken并修改了my TkSharedModule

export const BASE_URL = new InjectionToken<string>('BASE_URL');
//...
export class TkSharedModule {
  static forRoot(host: string) {
    return {
      ngModule: TkSharedModule,
      providers: [{
        provide: BASE_URL,
        useValue: host
      }]
    }
  }
}

environmentmy中文件提供了此令牌的值AppModule

import {environment} from '../environments/environment';
//...
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    TkSharedModule.forRoot(environment.url)
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

最后将这个值注入我的服务中:

//MyServiceService

import { BASE_URL } from '../tk-shared.module';

constructor(@Inject(BASE_URL) BASE_URL: string) {
  console.log('base url', BASE_URL);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular CLI 6-使用源映射构建Angular库

Angular CLI 6:将库依赖项放在何处

Angular 6 CLI工作区。如何创建导出服务的库

Angular CLI构建目标与环境

Angular CLI 6未知选项:“-singleRun”

Angular CLI 6:未知选项:'--locale'

Angular 6 CLI`未知选项:'--app'`

如何使用angular-cli(6.x)创建Mono-repo项目结构

如何添加/设置环境Angular 6 angular.json文件

Angular 6 + CLI(TypeScript)-如何停止生成.spec.ts测试文件

使用Angular CLI 6项目在Chrome工作区中使用组件CSS文件

Angular 6-根据环境提供不同的索引文件

Angular / CLI 6.x中的自定义原理图构建没有错误,但是我无法使用它来生成文件

Angular 6库管

Angular CLI 6.无法在app.module的子模块中使用自定义库组件

angular-cli哪里是webpack.config.js文件-新的angular6不支持ng弹出

Pug支持Angular 2 / Angular 4 / Angular 6 / Angular cli / Angular cli 6(无自定义WebPack配置)

Angular 2+ - 为 Angular 6 安装哪个 cli 版本?

Angular 6无法找到.angular-cli.json并更改outDir

Angular 6:找不到模块'@ angular / cli / plugins / webpack'

Angular Cli工作区之外的Angular库

Angular-CLI-如何根据环境替换文件中的某些字符串

在Angular CLI项目中使用ES6

Angular CLI v6:“未知选项:'-bh'”

在 angular 6 cli 项目中使用 Javascript 和 Jquery

Jest遇到意外令牌-导入(Angular CLI 6)

angular6:使用cli添加通用支持

Angular(CLI)6-本地图书馆出版

Angular CLI 6:背景图片问题