我正在将AngularJS应用程序迁移到Angular(1.6到4.0),并且我在测试中遇到了动态创建的组件。例如,我有一个集成测试,它创建一个AngularJS组件,其中有一个按钮,弹出一个通过ngx-bootstrap
创建的Angular模式(使用ComponentFactory.create
)。问题是变化检测不会在我的测试中触发模态内部。它适用于应用程序本身。其他Angular 2组件在测试中工作,但不是动态创建的。
我的设置中是否有错误导致动态创建的组件被挂钩到错误的区域?我已经尝试过所有我认为无法改变的组合。
我用一些简单的嵌入式角度2组件here制作了一个plunkr。
为了测试它,我发现自己必须总是手动触发变化检测here。打开app/ng1/parent.spec.ts
,您可以在其中找到不需要的doChangeDetection
功能。
请注意,我使用UpgradeAdapter
代替downgradeComponent
,因为this github issue表示非动态创建的组件会破坏更改检测。