我有一个像这样的测试组件:
@Component({
selector: 'test-wrapper',
template: `
<ui-input-list [listData$]="uiInputListDemoData$">
<input
focusController [forceFocus$]="forceFocus$"
valueController
(ngModelChange)="selectedInputListDemoItem = $event"
/>
</ui-input-list>
`
})
class InputListTestWrapperComponent {
dummyList = ['Foo', 'Bar'];
uiInputListDemoData$ = new BehaviorSubject<string[]>(this.dummyList);
selectedInputListDemoItem;
forceFocus$ = new Subject();
}
如您所见,输入有两个指令,@ Input()forceFocus$
属于其中一个指令。在ui-input-list
我有
@ContentChild(FocusControllerDirective) fcd: FocusControllerDirective;
@ContentChild(ValueControllerDirective) vcd: ValueControllerDirective;
这两个变量fcd
和vcd
在* ngIf中的模板中使用(显示或不显示列表),但总是编译为<!--bindings={"ng-reflect-ng-if": ""}-->
。为什么?我正在利用fixture.whenstable,fixture.detectchanges甚至fakeAsync与tick(3000)。为什么代码在手动测试时有效,但在Jasmine中,指令始终保持未定义,即使在等待之后?我没有错误,也不知道如何调试它。