例如见这一行:
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时,一切都会正常工作。
答案 0 :(得分:3)
DI必须由模块提供,它将由较低的模块继承。
我从未尝试过像这样的降级,但似乎是提供注入类的方法的一个问题,当你以这种方式运行组件时,它的机制可能不存在。
尝试使用@Inject(NgZone) private zone: NgZone
和@Inject(ElementRef) elementRef: ElementRef
快乐的编码!