我正在将 AngularJS 应用程序迁移到 Angular(1.6 到 4.0),并且在我的测试中正在努力处理动态创建的组件。例如,我有一个集成测试,它创建一个带有按钮的 AngularJS 组件,该按钮弹出一个 Angular 模态(使用ngx-bootstrap
),该模态是通过ComponentFactory.create
. 问题是更改检测不会在我的测试中的模态内部触发。它适用于应用程序本身。其他 Angular 2 组件在测试中工作,但不是那些动态创建的。
我的设置是否有问题导致动态创建的组件挂接到错误的区域,也许?我已经尝试了所有我能想到的更改组合,但都无济于事。
我在这里用一些简单的嵌入式 angular 2 组件设计了一个 plunkr 。
为了测试它,我发现自己必须总是在这里手动触发变更检测。打开app/ng1/parent.spec.ts
您可以找到doChangeDetection
不需要的功能的地方。
请注意,我使用UpgradeAdapter
而不是downgradeComponent
因为这个 github 问题表明非动态创建的组件会破坏更改检测。