Angular 15升级至16后出现NG8004等编译错误求助
Angular 15升级16后编译错误解决方案
问题1:NG8004 找不到名为'txtTranslate'的管道
- 检查
SharedModule配置:确保TxtTranslatePipe同时出现在declarations和exports数组中。只有导出后,其他导入SharedModule的模块才能使用该管道。示例配置:
import {TxtTranslatePipe} from './resource/txt-translate.pipe'; @NgModule({ declarations: [TxtTranslatePipe], exports: [TxtTranslatePipe, CommonModule] // 同时导出管道和CommonModule }) export class SharedModule {}
- 移除
AppModule中对TxtTranslatePipe的声明。Angular不允许在多个模块中重复声明同一个管道/组件/指令,会导致识别异常。 - 确认
AppModule已正确导入SharedModule:
@NgModule({ imports: [SharedModule, ...其他模块] }) export class AppModule {}
问题2:NG8002 无法绑定'src'到'svg-icon',因其不是已知属性
- 如果
svg-icon是第三方组件(如angular-svg-icon库):确保对应的模块已导入到当前使用该组件的模块中(比如SharedModule或AppModule)。例如使用angular-svg-icon时,需要导入AngularSvgIconModule。 - 如果是自定义
svg-icon组件:检查组件类是否定义了@Input()装饰器的src属性,示例:
import { Component, Input } from '@angular/core'; @Component({ selector: 'svg-icon', template: '<svg [attr.src]="src"></svg>' }) export class SvgIconComponent { @Input() src!: string; // 必须定义该输入属性 }
- 确认组件选择器拼写正确,模板中使用的
<svg-icon>与组件类的selector完全一致,避免大小写或拼写错误。
内容的提问来源于stack exchange,提问作者Priya Ganesan
相关产品推荐
相关产品推荐

