“...用Injectable装饰” - Angular2

时间:2016-04-25 15:40:13

标签: service angular

我正在通过Youtube上的视频教程学习Google的新框架Angular2:https://www.youtube.com/watch?v=SEM6-TkuOgo

当我开始了解服务时遇到不同类型的错误,例如:

  

EXCEPTION:无法解析'ContactListComponent'(?)的所有参数。确保所有参数都使用Inject进行修饰或具有有效的类型注释,并且'ContactListComponent'使用Injectable进行修饰。

     

EXCEPTION:错误:未捕获(在承诺中):无法解析'ContactListComponent'(?)的所有参数。确保所有参数都使用Inject进行修饰或具有有效的类型注释,并且'ContactListComponent'使用Injectable进行修饰。

     

angular2-polyfills.js:469未处理的承诺拒绝:无法解析'ContactListComponent'(?)的所有参数。确保所有参数都使用Inject进行修饰或具有有效的类型注释,并且“ContactListComponent”使用Injectable进行修饰。 ;区域:角;任务:Promise.then;值:

     

NoAnnotationError {message:“无法解析'ContactListComp的所有参数... ntactListComponent'用Injectable修饰。”,stack:“错误:无法解析'ContactL的所有参数... node_modules / angular2 / bundles / angular2.js:477: 94)“}   信息   :   “无法解析'ContactListComponent'(?)的所有参数。确保所有参数都使用Inject进行修饰或具有有效的类型注释,并且'ContactListComponent'使用Injectable进行修饰。”   堆   :   “错误:无法解析'ContactListComponent'(?)的所有参数。确保所有参数都使用Inject进行修饰或具有有效的类型注释,并且'ContactListComponent'已装饰/

     

angular2-polyfills.js:471错误:未捕获(在承诺中):无法解析“ContactListComponent”(?)的所有参数。确保所有参数都使用Inject进行修饰或具有有效的类型注释,并且'ContactListComponent'使用Injectable进行修饰。(...)

     

angular2-polyfills.js:469未处理的承诺拒绝:无法解析'ContactListComponent'(?)的所有参数。确保所有参数都使用Inject进行修饰或具有有效的类型注释,并且“ContactListComponent”使用Injectable进行修饰。 ;区域:;任务:Promise.then;值:NoAnnotationError {message:“无法解析'ContactListComp的所有参数... ntactListComponent'用Injectable修饰。”,stack:“错误:无法解析'ContactL的所有参数... node_modules / angular2 / bundles / angular2.js:477:94 )“}

     

angular2-polyfills.js:471错误:未捕获(在承诺中):无法解析“ContactListComponent”(?)的所有参数。确保所有参数都使用Inject进行修饰或具有有效的类型注释,并且'ContactListComponent'使用Injectable进行修饰。(...)

我不明白控制台的真正意义我试图评论代码的某些部分,以测试我的代码编译时是否编译。

如果觉得问题可能出在contact-list.component.ts中的这个部分:

constructor(private _contactService: ContactService) {}

这个也在contact.service.ts中:

return Promise.resolve(CONTACTS);

我在项目中截取了不同TypeScript文件的屏幕截图:http://imgur.com/a/mqb5P

如果有人有一些线索来调试这段代码我就全都耳朵了! :)

PS:我可以复制/粘贴屏幕截图中的代码,如果这可能会有所帮助。

2 个答案:

答案 0 :(得分:1)

如果您有<{1}}组件

ContactListComponent

之类的服务
export class ContactListComponent {
  constructor(private contactService:ContactService) {}
}

然后ContactService类需要有一个export class ContactService { constructor(private someDep:SomeDependency) {} } 装饰器,如

@Injectable()

答案 1 :(得分:0)

大多数时候这样的问题是因为构造函数参数中指定的类型的导入是任务或错误。

您是否导入&#34; ContactService&#34;在component.list.ts文件中输入?

这样的事情:

import { ContactService } from './contact.service';

Angular2负责找出要注入构造函数的实例类型。使用TypeScript,它使用您指定的参数类型完成,但需要先将它们导入模块。

使用装饰器完成依赖注入:@Injectable用于简单类,@ Component / @Directive用于组件/指令。但是你需要装饰师。