Angular 11 库模块已导入但未在消费应用程序中使用

艾略威索夫

我正在开发一个 Angular 库来包含将在我公司的多个 Angular 项目中共享的服务、管道、指令等。到目前为止,我已经实现了三个服务,并且库项目构建得很好。但是,当我在使用该库的应用程序中导入模块时,在 VSCode 或控制台中没有出现错误,但我的 DOM 完全是空白的。直接在项目文件夹中导入 .ts 文件时,这些服务也能正常工作,但 Angular 文档特别指出要这样做,而只能从构建的模块中导入它们。我还确保 .tsconfig 中的“Utilities”模块导入正确映射到构建的项目文件夹。请帮忙!

这是库模块定义:

import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { ModuleWithProviders, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UtilitiesConfig } from './interfaces/utilities-config.interface';
import { APIService } from './services/api.service';
import { AuthenticationService } from './services/authentication.service';
import { JWTService } from './services/jwt.service';
import { LogService } from './services/log.service';


@NgModule({
  declarations: [],
  imports: [
    BrowserModule,
    HttpClientModule,
  ],
  exports: [
  ],
  providers: [
    APIService,
    LogService,
    AuthenticationService
  ]
})
export class UtilitiesModule {

  public static forRoot(environment: UtilitiesConfig): ModuleWithProviders<UtilitiesModule> {
    return {
      ngModule: UtilitiesModule,
      providers: [
        {
          provide: 'environment',
          useValue: environment
        },
        {
          provide: HTTP_INTERCEPTORS,
          useClass: JWTService,
          multi: true
        },
        APIService,
        LogService,
        AuthenticationService
      ]
    }
  }

}

这是消费应用程序的模块定义:

import { UtilitiesModule } from 'utilities';

let imports: any[] = [
  UtilitiesModule.forRoot({
    ...
  })
];


@NgModule({
  declarations: [
    ...
  ],
  providers: [
    ...
  ],
  imports
})
export class ConsumerModule {

  constructor(injector: Injector) {
    const ConsumerElement = createCustomElement(ConsumerButtonComponent, { injector });
    customElements.define('ConsumerApp', ConsumerElement);
  }

  ngDoBootstrap() { }

}
艾略威索夫

我最终弄清楚了这个问题。库需要使用 链接npm link,消费应用程序需要链接到库。由于我的所有项目都包含在一个有角度的 (npm) 工作区中,因此我不得不稍微改变一下。

从 angular 工作区根目录:

cd projects/utilities
npm link
cd ../.. (back to workspace root)
npm link dist/utilities

在使用库、消费应用程序或两者进行开发时,请确保在监视模式下运行库:

cd projects/utilities
ng build --project=utilities --watch

祝你好运,我希望这能帮助那里的人!

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Angular8创建的示例应用程序未在IE11中呈现

Angular 8.2.14 与 PrimeNG 8.0.0,应用程序未在 IE11 中加载

Angular 8应用程序未在IE11上运行

防止 Angular 11 应用程序中的 JQuery 默认行为

在Angular应用程序中使用ES6模块库和意外的令牌“导出”错误

Angular 11 - 使用 JSZip 库压缩

在Angular / Ionic应用程序中使用'normal'npm模块

使用IE 11的Angular 4应用程序,“无法从释放的脚本中执行代码”

在angular应用程序中使用外部javaScript库

在 Angular 8 应用程序中使用外部 JavaScript 库

在Angular 4应用程序中使用React组件库

在应用程序中使用来自 Angular 库的资产

Angular 11:不能使用查询参数

使用 FlexLayoutModule 在 Angular 11 中出现错误

我使用 angular 11 创建了表单

如何导入共享模块(使用 Angular Material)来测试 Angular 应用程序?

Angular 2模块导入中断应用程序

如何在 Angular 11 / ionic 6 中使用 MergeMap?

如何在 Angular 11 中使用 Ag-Grid

iPad的Safari 10无法加载Angular 5应用程序(可在Safari 11上运行)

Angular应用程序在IE11中给出空白页

Angular 4应用程序无法在IE11和Edge上运行

Angular 应用程序仅在 IE11 上抛出语法错误

Internet Explorer(10,11)加载Angular 2应用程序非常慢

Angular 5应用程序无法在IE11中呈现

IE11中未加载Angular 9.x应用程序

Angular 7应用程序在IE 11中无法正常工作

IE11中的Angular4应用程序运行问题

在 Angular 应用程序中禁用 IE11 浏览器快捷键