本指南适用于当前版本
ng-zorro-antd >= 0.7.x;
如果在升级过程中遇到问题,欢迎提出。提问前请阅读 如何向开源社区提问题
如果发现本指南存在遗漏/错误,请指出!
或者你遇到了新的问题并解决了,欢迎补充!
node >= 8.9.0
npm >= 5.5.1
package-lock.json 文件。这一步会自动生成最新的配置文件,在项目下执行:
$ npm install -g @angular/cli
$ npm install @angular/cli
$ ng update @angular/cli
这一步会升级 TypeScript, RxJs 以及 @angular/{packages} 的相关依赖,在项目下执行:
$ ng update @angular/core
$ ng update
在项目下执行:
$ npm install ng-zorro-antd@latest --save
删除 forRoot, 在 app.module.ts 中修改:
@NgModule({
imports : [
- NgZorroAntdModule.forRoot()
+ NgZorroAntdModule
]
})
接下来根据以下情况选择修复样式:
在项目下的 angular.json 中找到 styles 属性,按以下方式修改:
"styles": [
- "../node_modules/ng-zorro-antd/src/ng-zorro-antd.less"
+ "node_modules/ng-zorro-antd/src/ng-zorro-antd.min.css"
]
执行以下命令,降级 less 到 2.7 版本 为什么?
npm install [email protected] -D
找到引入过 ng-zorro-antd 的样式文件,按照以下方式修改:
- @import "~ng-zorro-antd/**";
+ @import "../node_modules/ng-zorro-antd/**";
安装引入路径修复工具 npm install -g rxjs-tslint
在项目下运行 rxjs-5-to-6-migrate -p src/tsconfig.app.json (rxjs 使用量大的会比较慢)
此时运行 ng serve ,你可能会看见很多 rxjs 的错误信息。接下来将报错的文件按照以下方式修改:
rxjs/operators 中引入。rxjs 中引入。pipe 中使用。import { Observable } from 'rxjs';
Observable.fromEvent(inputRef, 'input')
.debounceTime(500)
.distinctUntilChanged()
.subscribe(() => { ... })
import { fromEvent } from 'rxjs';
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
fromEvent(inputRef, 'input')
.pipe(
debounceTime(500),
distinctUntilChanged()
).subscribe(() => { ... })
Inline JavaScript is not enabled
ERROR in ./src/app/pages/xxx/index.less
Module build failed:
// https://github.com/ant-design/ant-motion/issues/44
.bezierEasingMixin();
^
Inline JavaScript is not enabled. Is it set in your options?
in xx/node_modules/ng-zorro-antd/src/style/color/bezierEasing.less (line 110, column 0)
ERROR in ./src/styles.less (./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/less-loader/dist/cjs.js??ref--15-3!./src/styles.less)
降级 less 到 2.7,npm install [email protected] -D
less wasn't found
ERROR in ./xxx/index.less
Module build failed:
@import "~ng-zorro-antd/src/style/color/colors.less";
^
'~ng-zorro-antd/src/style/color/colors.less' wasn't found. Tried - xxx/~ng-zorro-antd/src/style/color/colors.less,~ng-zorro-antd/src/style/color/colors.less
in /Users/hsuanlee/Projects/stream-6.0/src/theme.less (line 1, column 0)
ERROR in ./src/styles.less (./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/less-loader/dist/cjs.js??ref--15-3!./src/styles.less)
修改从 node_modules 中引入样式文件中的的路径
- @import "~ng-zorro-antd/**";
+ @import "../node_modules/ng-zorro-antd/**";
Missing locale data for the locale '..'..
请在 main.ts 或 app.module.ts 添加以下代码注册国际化。
import { registerLocaleData } from '@angular/common';
import zh from '@angular/common/locales/zh';
registerLocaleData(zh);
RxJs
查看 官方升级指南
不降级less的一种解决办法,新建patch.js,内容为:
const fs = require('fs');
const styles = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/styles.js';
fs.readFile(styles, 'utf8', function (err, data) {
if (err) {
return console.log(err);
}
const result = data.replace(/Object.assign\(\s*{\s*sourceMap\s*:\s*cssSourceMap\s*}\s*,\s*lessPathOptions/, 'Object.assign({ sourceMap: cssSourceMap,javascriptEnabled: true }, lessPathOptions');
fs.writeFile(styles, result, 'utf8', function (err) {
if (err) return console.log(err);
});
});
package.json 添加脚本
"postinstall": "node patch.js"
我從 0.6x 升到 1.x ... styling 完全跑掉欸
@karocksjoelee 0.6 到 0.7 有较大的不兼容升级
样式从emulated 改成到了全局,这样才可以支持自定义主题
两个版本的文档都保留了,可以对照一下
@vthinkxie 原來如此, 好的謝謝
除了降级 less 到 2.7 版本,还需要安装"less-loader": "~4.0.0",
[email protected] 版本已经修复LESS的Inline JavaScript这个问题
pr:https://github.com/angular/angular-cli/pull/11958/commits/f9de24a0aac3e4a427fe025c7b55c6cf1cd43523
ng update/init was remove
已解决问题:Timeline:nzModel="alternate" 效果不正常,已通过升级解决。
@karocksjoelee, 您好,我升级之后 样式也完全跑掉了,请问你是怎么解决的呀
@karocksjoelee, 您好,我升级之后 样式也完全跑掉了,请问你是怎么解决的呀
因為他是不兼容升級,我那時候是手動改 .. 記得是 service 跟一些 component input 名稱
Most helpful comment
不降级less的一种解决办法,新建patch.js,内容为:
package.json 添加脚本