注意:我来自以下链接。它建议退回到旧版本。 https://github.com/angular/angular/issues/32508
当我运行npm test
时,出现了这个错误,所以上面的解决方案没有帮助。为了解决这个问题,我不得不在jest.ts
文件中导入本地化。
只需添加:
import "@angular/localize/init";
现在,由于i18n属性已经被转换为$localize调用,我们需要加载$localize函数。
CLI提供了一个原理图来为您完成此操作。只需运行: ng add @angular/localize
它将把该软件包添加到您的依赖项并将必要的导入添加到您的polyfills(import '@angular/localize/init')
您还可以参考以下链接以获取更多解释。 https://blog.ninja-squad.com/2019/12/10/angular-localize/
所以,在我的情况下,我尝试使用@ng-bootstrap/ng-bootstrap来处理Angular v15。
经过长时间的调查,我创建了一个新的Angular v14项目:
npx -p @angular/cli@14.2.0 new hello-world
并安装
@ng-bootstrap/ng-bootstrap
好的,我完成了!
因此,我在根目录 /src 中创建了 polyfills.ts。
然后更新了 angular.json 文件:
projects/architect/build/polyfills: ["zone.js", "src/polyfills.ts"],
并且
projects/architect/test/polyfills: ["zone.js", "zone.js/testing", "src/polyfills.ts"],
in tsconfig.app.json:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": [
"node"
]
},
"files": [
"src/main.ts",
"src/polyfills.ts" <- add this
],
"include": [
"src/**/*.d.ts"
]
}
在 tsconfig.spec.json 中相同:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/spec",
"types": [
"jasmine",
"@angular/localize"
]
},
"files": [
"src/polyfills.ts" <- add this
],
"include": [
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}
在 polyfill 中替换这个:
import '../node_modules/@angular/localize/init';
用这个:
import '@angular/localize/init';
一切都很好!
import '@angular/localize/init';
。当您切换到不同的i18n库并且没有正确清理项目时,可能会出现此错误消息,例如在使用默认的@angular/localize包的情况下删除所有出现的i18n。
我在polyfill.ts
文件中使用了import '@angular/localize/init';
,但错误实际上出现在其他地方!我只是把它放在这里,以防对某人有所帮助!
我的项目中有一个.browserlistrc
文件,其中的规则集破坏了Angular i18n。在我的情况下,我必须从列表中删除>0.3%
才能使其正常工作!
祝你拥有愉快的一天!