Angular11模板解析错误:同级组件message-block无法识别如何解决
可按以下步骤依次排查解决:
1. 先修正你贴出的模块配置笔误
这两个是高频低级错误,写错后模块配置完全不生效:
- 模块装饰器名错误:你写的是
@NgModel,正确应为@NgModule,前者是表单双向绑定的装饰器,后者才是Angular模块的装饰器 - 导出属性名错误:配置项应为复数
exports,你写的是单数export,会导致message-block组件根本没有被对外暴露
2. 打通模块依赖
profileInfo组件隶属于profileBlock.module.ts,Angular中要使用其他模块导出的组件/指令/管道,必须在当前组件所属模块的imports数组中引入对应模块:
打开profileBlock.module.ts,在导入数组中加入BlockModule即可,示例:
import { NgModule } from '@angular/core'; import { BlockModule } from '../../block.module'; // 按你实际路径调整 import { ProfileInfoComponent } from './profileInfo/profileInfo.component'; @NgModule({ imports: [ // 你原有其他导入保留 BlockModule ], declarations: [ProfileInfoComponent] }) export class ProfileBlockModule {}
3. 附加排查项
- 确认
message-block组件的@Component装饰器中selector字段值确实是message-block,没有拼写错误、没有遗漏自定义前缀(比如如果定义的是app-message-block,使用时也要同步带前缀) - 确认你
BlockModule中declarations和exports里的messageBlockComponents数组确实包含了MessageBlockComponent,没有变量名拼写错误 - 如果
ProfileBlockModule是懒加载模块,必须单独导入BlockModule,根模块或其他上层模块的导入不会对懒加载模块生效
注意:不要盲目添加CUSTOM_ELEMENTS_SCHEMA屏蔽报错,该配置仅适用于接入第三方自定义Web Components的场景,自己开发的Angular组件加这个属于掩耳盗铃,只会掩盖真实的模块配置问题
内容的提问来源于stack exchange,提问作者AlanZh
相关产品推荐
相关产品推荐

