我有一个名为MatSelectControls
的自定义组件,其用法如下:
<component-im-testing>
<mat-select>
<mat-select-controls></mat-select-controls>
<mat-option *ngFor="..."></mat-option>
</mat-select>
</component-im-testing>
在测试中,我可以像这样检索MatSelect
实例:
const matSelectRef = fixture.debugElement.query(By.directive(MatSelect));
const matSelect = matSelectRef.componentInstance as MatSelect;
matSelect.open();
但是我真正追求的是MatSelectControls
组件。尝试以相同方式选择它不起作用:
const matControlsRef = fixture.debugElement.query(By.directive(MatSelectControls)); //returns null
我认为这是行不通的,因为MatSelectControls
实际上呈现在MatSelect
创建的cdk覆盖内。
即使MatSelectControls
组件实例实际上在cdk叠加层中呈现,我该如何检索呢?
答案 0 :(得分:0)
没有完整的代码很难帮助,但是您可以做的只是通过父组件中的mat-select-controls
添加对@ViewChild()
组件的引用:
@ViewChild(MatSelectControls) matSelectControls: MatSelectControls;
然后在测试中使用它:
component.matSelectControls.abc