使用appInject vs@inject decorator将NgZone注入angular2组件构造函数

使用appInject vs@inject decorator将NgZone注入angular2组件构造函数,angular,dependency-injection,Angular,Dependency Injection,我需要在我的ng2组件中获得对当前ngzone的引用。查看源代码,bootstrap方法将NgZone绑定到新创建的实例 bind(NgZone).toValue(zone) 这意味着我应该能够将其注入到我的组件中。我的第一种方法是在appInjector数组中声明它 @Component({ selector:"todo-app", appInjector:[Store, TodoFactory, **NgZone**], lifecycle:[onDestroy]

我需要在我的ng2组件中获得对当前ngzone的引用。查看源代码,bootstrap方法将NgZone绑定到新创建的实例

bind(NgZone).toValue(zone)
这意味着我应该能够将其注入到我的组件中。我的第一种方法是在appInjector数组中声明它

@Component({
    selector:"todo-app",
    appInjector:[Store, TodoFactory, **NgZone**],
    lifecycle:[onDestroy]
})
@View({ templateUrl: 'todo.html', directives: [NgFor] })
class TodoApp {
    constructor(todoStore:Store, factory: TodoFactory, zone:NgZone) {
    }
}
但是,我认为这会导致以下错误

实例化令牌(ComponentRef)时出错!。原始错误: 无法解析NgZone的所有参数。确保他们都有 有效的类型或批注

解决方法是在参数上使用@injectdecorator

@Component({
    selector:"todo-app",
    appInjector:[Store, TodoFactory],
    lifecycle:[onDestroy]
})
@View({ templateUrl: 'todo.html', directives: [NgFor] })
class TodoApp {
    constructor(todoStore:Store, factory: TodoFactory, **@Inject(NgZone)** zone:NgZone) {
    }
}

有人知道这是一个bug还是故意的吗?

从我对Angular2的(有限的)使用来看,在Beta-0中没有必要使用“注入”装饰器,我只能说我在Angular4中遇到了这个问题。