在此question之后,我有了一个新问题。这两种方式有什么区别?
这是我的初始代码:
import {Http, HTTP_PROVIDERS} from 'angular2/http';
@Component({
viewProviders: [HTTP_PROVIDERS],
..//
constructor(http: Http){
..//
但在进行测试时,他们提供了查找错误的代码:
import { Component, Inject} from 'angular2/core';
//above code should be at start.
constructor(@Inject(Http) http: Http) {
我认为它的工作方式相同,有人可以告诉我,有什么区别,或者只是第一个就像第二个但@Inject
是隐含的或类似的东西。我的英语。
答案 0 :(得分:2)
实际上,@Inject
装饰器用于询问某种类型的依赖关系。此级别也支持字符串。
如果您已经有类Component
或Injectable
类的装饰器,并且您在TypeScript中为参数(您的情况)指定了类型,则使用此其他装饰器是不必要的,因为分辨率将自动分类。如果您没有提供类型,则@Inject
装饰器将非常有用......
另一个用例。如果您想使用 ngUpgrade (混合Angular1 / Angular2应用程序),Angular1的工厂只能按名称注册,您无法按类解析它们。所以在这里使用@Inject
是必要的。看到这个plunkr:http://plnkr.co/edit/yMjghOFhFWuY8G1fVIEg?p=preview。它是用TypeScript编写的,但没有注释,但可以进行调整;)
您还可以查看此链接: