Angular 5 Upgrade NullInjectorError: No provider for InjectionToken LocaleId

Angular 5 Upgrade NullInjectorError: No provider for InjectionToken LocaleId

我有一个 Angular 4 应用程序,我已使用 CLI 1.5.4 升级到 Angular 5。我还有一个使用 npm link 的共享库。升级后,我必须将其添加到我的 tsconfig.app.json 以再次构建 CLI:

  "include": [
    "./**/*.ts",
    "../node_modules/my-lib/src/**/*.ts",
    "../node_modules/my-lib/index.ts",
    "../node_modules/my-lib/ng2-icad-cf.ts"
  ],

构建成功后,访问localhost:4200

时出现以下错误
NullInjectorError: No provider for InjectionToken LocaleId!

我在我的项目中找不到任何对 LOCALE / LocaleId 的引用。我怀疑 linked 库可能是问题所在,因为我对 Http 有相同的 NullIjectorError(库使用 Http,项目使用 HttpClient)但是在将 HttpClient 添加到库的主模块后它已经消失了,即使在恢复和恢复之后删除它...很奇怪。

我遇到了同样的问题。

首先,请确保将 "peerDependencies" 用于您的模块所依赖的任何 Angular 库,如下所述:https://github.com/angular/angular-cli/issues/3854#issuecomment-274344771

然后尝试 运行/通过将 --preserve-symlinks 传递给 Angular CLI 来构建应用程序。例如:

ng serve --preserve-symlinks

有关详细信息,请参阅 https://github.com/angular/angular-cli/issues/8677#issuecomment-347885068

此外,这可能会有所帮助:https://github.com/angular/angular-cli/wiki/stories-linked-library

在测试文件中导入 LOCALE_ID 模块,然后导出为 GLOBAL_PROVIDER。

import { LOCALE_ID } from '@angular/core';


export const GLOBAL_PROVIDER = [
  { provide: LOCALE_ID, useValue: 'en'}
];