我正在尝试使用new MyComponent()
实例化我的Angular 2组件。但是,对于采用@Input
的组件,我该如何传递它们呢?然后,如果实例化了,说我想更改输入。这仅仅是重新分配我传入的变量的问题吗?
最佳答案
如果您使用new
创建实例,则无法对分配给该字段做任何其他事情。您可以使用TestComponentBuilder
进行更改检测和绑定(bind)。
在Dart代码示例下面,该示例测试BwuArraySelector
组件。
我想您可以在TS中弄清楚该如何做。
/// Component only for testing BwuArraySelector
@Component(
selector: 'test-cmp-singleconfigured',
directives: const [BwuArraySelector],
template: '''
<bwu-array-selector #singleConfigured
[items]='[{"name": "one"},{"name": "two"},{"name": "three"}]'>
</bwu-array-selector>
''')
class SingleConfigured {
@ViewChild('singleConfigured') BwuArraySelector arraySelector;
}
...
// inject the TextComponentBuilder and create a component instance
ngTest('single selection', (TestComponentBuilder tcb) async {
ComponentFixture tc = await tcb.createAsync(SingleConfigured);
tc..detectChanges();
BwuArraySelector el =
(tc.componentInstance as SingleConfigured).arraySelector;
调用
detectChanges()
会使用BwuArraySelector
测试组件模板绑定(bind)中的值来初始化SingleConfigured
的输入。