DevExtreme组件在事件参数中不可用

时间:2019-10-31 16:33:36

标签: angular devexpress devextreme devextreme-angular

DevExtreme组件提供的大多数事件方法都会传入一个事件对象,该事件对象将事件触发组件作为子对象。然后,在处理事件方法中,我可以仅使用event参数中的组件,而不必使用@ViewChild机制引用该组件。在大多数情况下,这很完美。但是-如果我使用DxForm创建表单组件dynamicall并将以下对象提供给DxForm的items参数,它将不再起作用:

[{
   dataField: 'postingText',
   editorType: 'dxAutocomplete',
   editorOptions: {
       dataSource: this._listService.PostingTextDataSource,
       onValueChanged: (changedValue) => this.autocompleteChanged(changedValue) 
   }
}]

将调用我的事件处理方法autocompleteChanged,并获得事件对象。事件对象还有一个子组件。但是这个组件对象以某种方式被破坏了:

enter image description here

如您所见,组件对象没有有用的属性。而且大多数属性都以下划线开头(它们是某种私有/受保护的吗?)。

我怎么了?真的不可能如此简单地获得组件吗?

1 个答案:

答案 0 :(得分:1)

您是对的,表单编辑器未在其事件处理程序中提供表单组件。它们仅提供有关自身的信息(您也可以检查 element 参数-它是编辑器的元素,而不是Form的元素)。

因此,在您的情况下,component参数是Autocomplete的实例,因此您必须使用ViewChild装饰器。

或者,您可以从onInitialized事件处理程序中获取表单的实例。

他们在Angular Components - Call Methods主题中有代码段。