如何在 Angular2 中的 Devextreme dxPopover 中访问 dxTemplate 中的表单
How to access the form inside dxTemplate inside Devextreme dxPopover in Angular2
我需要订阅 dxPopover 中的表单更改,如下所示,但该表单始终未定义。
但是,如果我将表单移到 dxPopover 之外,就没有问题了。
如何访问 dxPopover 中的表单元素?
模板:
<dx-popover
target="#button"
position="bottom"
width="900px"
[visible]="true">
<div *dxTemplate="let data of 'content'">
<form #form="ngForm" >
<!-- form content -->
</form>
</div>
</dx-popover>
组件:
@ViewChild('form') form;
ngAfterViewInit() {
console.log(this.form); // outputs 'undefined'
}
编辑:这是一个小插曲 - https://plnkr.co/edit/nQJ0brGs0FlMBkexuavK
选项 1:
像在 dxPopover 标记中那样传递 HTML 需要您在 dxPopover 模板中添加 <ng-content>
以便它被注入,然后在视图初始化生命周期挂钩之后您可以访问有问题的变量。
选项 2:
您应该将 div
移动到实际组件模板中的 dx-popover
组件指令中。
然后使用输出装饰器将表单的值发送到托管 dx-popover
组件的父组件
如果您想将数据传递给 dx-popover
组件,您可以使用 Input 装饰器作为相反的方式。
请查看官方文档以获取示例Here
由于隐藏弹出窗口时 DOM 中甚至不存在 dxPopover 的内容,因此无法对其执行 @ViewChild
。
但是,在显示弹出窗口时可以访问这两种形式。
我需要订阅 dxPopover 中的表单更改,如下所示,但该表单始终未定义。
但是,如果我将表单移到 dxPopover 之外,就没有问题了。
如何访问 dxPopover 中的表单元素?
模板:
<dx-popover
target="#button"
position="bottom"
width="900px"
[visible]="true">
<div *dxTemplate="let data of 'content'">
<form #form="ngForm" >
<!-- form content -->
</form>
</div>
</dx-popover>
组件:
@ViewChild('form') form;
ngAfterViewInit() {
console.log(this.form); // outputs 'undefined'
}
编辑:这是一个小插曲 - https://plnkr.co/edit/nQJ0brGs0FlMBkexuavK
选项 1:
像在 dxPopover 标记中那样传递 HTML 需要您在 dxPopover 模板中添加 <ng-content>
以便它被注入,然后在视图初始化生命周期挂钩之后您可以访问有问题的变量。
选项 2:
您应该将 div
移动到实际组件模板中的 dx-popover
组件指令中。
然后使用输出装饰器将表单的值发送到托管 dx-popover
组件的父组件
如果您想将数据传递给 dx-popover
组件,您可以使用 Input 装饰器作为相反的方式。
请查看官方文档以获取示例Here
由于隐藏弹出窗口时 DOM 中甚至不存在 dxPopover 的内容,因此无法对其执行 @ViewChild
。
但是,在显示弹出窗口时可以访问这两种形式。