Angular 9升级至16后出现NG8004错误:找不到number管道
解决Angular 16中"NG8004: No pipe found with name 'number'"错误
问题原因
Angular 16正式移除了number管道——它原本是DecimalPipe的别名,在Angular 15及之前版本还保留兼容,但16版本彻底取消了这个别名,所以直接使用| number会触发找不到管道的错误。
解决步骤
- 替换模板中的管道名称:把所有使用
| number的地方,直接改成| decimal,比如原来的
改成{{ amount | number:'1.2-2' }}
管道的参数格式和{{ amount | decimal:'1.2-2' }}number完全一致,不需要做任何调整。 - 确保模块导入正确:在使用该管道的组件所属模块中,确认已经导入了
CommonModule(特性模块)或BrowserModule(根模块),DecimalPipe属于这两个模块导出的内置管道,不需要额外手动注册。
额外排查点
- 清理Angular缓存:执行命令
ng cache clean,再重新运行ng serve或ng build,避免旧缓存导致的代码残留问题。 - 不要手动提供
DecimalPipe:如果之前手动在模块或组件中注册过该管道,需要移除,否则会导致重复提供的错误。
内容的提问来源于stack exchange,提问作者Nikhil Saji
相关产品推荐
相关产品推荐

