我需要获取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) {
}
}
有人知道这是一个错误还是故意的?