Angular导入自定义模块报错:已添加@NgModule仍提示需添加注解
解决Angular导入自定义模块时的"Unexpected value"错误
兄弟,我太懂这个坑了!你遇到的这个错误本质上是Angular模块规则的典型误解——@NgModule里的imports数组只能用来导入其他带@NgModule装饰器的模块类,而你肯定是不小心把ActionsService这个服务塞进了ReduxStoreModule的imports数组里,这就触发了Angular的报错。
给你一步步排查修复:
- 打开你的
ReduxStoreModule文件,找到@NgModule装饰器的配置对象 - 定位到
imports数组,把ActionsService从里面彻底移除 - 把
ActionsService放到正确的位置:- 如果这个服务只在
ReduxStoreModule相关组件里使用,就加到当前模块的providers数组中 - 如果想让整个应用都能注入这个服务,更推荐的方式是给
ActionsService加上@Injectable({ providedIn: 'root' })装饰器(Angular 6+支持,不需要手动加到任何模块的providers里)
- 如果这个服务只在
给你举个正确的ReduxStoreModule示例:
import { NgModule } from '@angular/core'; import { ActionsService } from './actions.service'; @NgModule({ declarations: [], // 这里放组件、指令、管道 imports: [ // 只能放其他NgModule,比如CommonModule、RouterModule之类的 ], providers: [ActionsService] // 服务就该放在这里! }) export class ReduxStoreModule { }
另外再确认下:你的ActionsService应该用@Injectable装饰,而不是@NgModule——只有模块类才需要@NgModule,服务、组件这些都有各自对应的装饰器,别搞混啦~
内容的提问来源于stack exchange,提问作者Jacob Weisenburger
相关产品推荐
相关产品推荐

