使用ng2-date-countdown遇报错:需添加@Pipe/@Directive/@Component注解求助
解决ng2-date-countdown的"Unexpected value 'CountDown' declared by the module"错误
这个错误的核心原因是你把第三方组件CountDown错误地加到了模块的declarations数组里,而不是导入它所属的模块。Angular的declarations只允许添加你自己编写的组件、指令、管道,第三方库的组件通常会封装在独立的模块中,需要通过imports来引入。
下面是具体的修复步骤:
确认依赖安装正确
先确保你已经正确安装了ng2-date-countdown:npm install ng2-date-countdown --save修改你的
AppModuleShared配置
打开app.shared.module.ts,把CountDown从declarations中移除,转而导入库提供的CountDownModule到imports数组中:import { NgModule } from '@angular/core'; // 导入库的模块,不是单个组件 import { CountDownModule } from 'ng2-date-countdown'; // ...其他必要的导入 @NgModule({ imports: [ // ...你的其他模块(比如BrowserModule、FormsModule等) CountDownModule // 把这个添加到imports里 ], declarations: [ // ...你自己的组件、指令、管道,不要在这里放CountDown ], // ...其他模块配置(比如providers、exports等) }) export class AppModuleShared { }在模板中正常使用组件
现在你可以在任意组件的模板中直接使用倒计时组件了:<!-- 替换yourConfig为你的倒计时配置对象 --> <countdown [config]="yourConfig"></countdown>
为什么会出现这个错误?
Angular会检查
declarations里的每一项是否带有@Component、@Directive或@Pipe装饰器。你直接声明CountDown时,Angular无法从当前模块上下文找到它的装饰器信息(因为它属于第三方模块),所以抛出了这个错误。通过导入CountDownModule,Angular会加载该模块中声明的所有组件,自然就能识别到CountDown组件的@Component装饰器了。
内容的提问来源于stack exchange,提问作者San Jaisy
相关产品推荐
相关产品推荐

