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

时间:2015-06-05 23:10:45

标签: angular dependency-injection

我需要获取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) {
    }
}

但是我这会导致以下错误

  

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

解决方法是在参数上使用@Inject装饰器。

@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) {
    }
}

有人知道这是一个错误还是故意的?

0 个答案:

没有答案