0

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

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

我的事件处理方法 autocompleteChanged 将被调用并且我得到事件对象。事件对象也有一个子组件。但是这个组件对象不知何故坏了:

在此处输入图像描述

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

我错了什么?真的不可能这么简单地获得组件吗?

4

1 回答 1

1

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

所以在你的情况下,组件参数是一个自动完成的实例,你必须使用 ViewChild 装饰器。

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

他们在Angular 组件 - 调用方法主题中有代码片段。

于 2019-11-27T18:10:37.003 回答