angular 2 downgrade组件:为什么构造函数参数会带来此错误:(SystemJS)无法解析(?)的所有参数

时间:2017-02-21 17:10:59

标签: angular typescript angular2-zone

例如见这一行:

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

我需要从构造函数中删除parmas,以便降级无错误地工作。我还有

  

(SystemJS)无法解析(?)

的所有参数

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

@ViewChild('myname') divElementRef:ElementRef;

但我没有找到任何解决方法如何声明NgZone,我总是得到它是未定义的,我可以用它“运行”。如果有人知道如何在构造函数之外创建ngZone实例,它将有所帮助,或者可以解释我在降级组件时得到的错误。

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

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

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

constructor(private elementRef: ElementRef) {}

我会收到错误消息。希望有人能解释原因。删除构造函数parmas时,一切都会正常工作。

1 个答案:

答案 0 :(得分:3)

DI必须由模块提供,它将由较低的模块继承。

我从未尝试过像这样的降级,但似乎是提供注入类的方法的一个问题,当你以这种方式运行组件时,它的机制可能不存在。

尝试使用@Inject(NgZone) private zone: NgZone@Inject(ElementRef) elementRef: ElementRef

快乐的编码!