angular 2 downgrade component: Why the constructor params bring this error: (SystemJS) Can't resolve all parameters for (?)

angular 2 downgrade component: Why the constructor params bring this error: (SystemJS) Can't resolve all parameters for (?)

例如,参见这一行:

constructor(private elementRef: ElementRef, private zone: NgZone) {}

我需要从构造函数中删除参数,以便 降级 正常工作。否则我得到

(SystemJS) Can't resolve all parameters for (?)

所以我找到了一种删除元素引用的方法:

@ViewChild('myname') divElementRef:ElementRef;

但是我没有找到任何如何声明 NgZone 的解决方案,我总是得到它是未定义的,我可以用它做 "run"。如果有人知道我如何在构造函数之外创建 ngZone 实例,那将会有所帮助,或者可以解释我在降级 componenet 时遇到的错误。

构造函数参数是否应该是我在降级组件时声明的输入的一部分?

angular.module('myModule').directive('myLabel', downgradeComponent({component: MyLabelComponent, inputs: ['text'] }) as angular.IDirectiveFactory)

如果 MyLableComponent 的构造函数如下所示:

constructor(private elementRef: ElementRef) {}

我会收到错误信息。希望有人能解释为什么。删除构造函数参数时,一切都会正常工作。

DI必须由模块提供,会被下层模块继承。

我从来没有尝试过使用那样的降级,但提供 类 注入的方式似乎是一个问题,也许当你 运行组件在这边

试试 @Inject(NgZone) private zone: NgZone@Inject(ElementRef) elementRef: ElementRef

编码愉快!