在这个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是隐式的,或者对我的英语来说是similar.Sorry。
发布于 2016-02-11 22:48:32
实际上,@Inject装饰器用于请求某种类型的依赖项。在此级别上也支持字符串。
如果您已经有了像Component或Injectable这样的类的装饰符,并且在TypeScript中为参数指定了一个类型(在您的情况下),那么使用另一个装饰符是不必要的,因为解析将自动按类进行。如果不提供类型,@Inject装饰器将非常有用.
另一个用例。如果要使用ngUpgrade (混合Angular1 / Angular2应用程序),则Angular1工厂仅按名称注册,不能按类解析。所以在这里使用@Inject是必要的。参见这个plunkr:http://plnkr.co/edit/yMjghOFhFWuY8G1fVIEg?p=preview。它是用TypeScript编写的,但没有注释,但可以修改;)
您还可以查看此链接:
https://stackoverflow.com/questions/35351212
复制相似问题