Angular Form - Item Properties
jQuery
To change a single item property at runtime, call the itemOption(id, option, value) method. This approach is more typical of jQuery. If the needed item is in a group or in a tab, the field parameter should be given the group caption or tab title followed by the item's name. An example is shown below.
$(function() {
var form = $("#formContainer").dxForm({
formData: {
firstName: "John",
lastName: "Heart",
phone: "+1(213) 555-9392",
email: "jheart@dx-email.com"
},
items: ["firstName", "lastName", {
itemType: "group",
caption: "Contacts",
items: ["phone", "email"]
}]
}).dxForm("instance");
$("#checkBoxContainer").dxCheckBox({
text: 'Show the Phone Number',
value: true,
onValueChanged: function (e) {
form.itemOption("Contacts.phone", "visible", e.value);
}
});
});To change several properties at a time, pass an object to the itemOption(id, options) method. When you call it with the id parameter only, this method returns the current configuration of the specified form item.
$(function() {
// ...
$("#buttonContainer").dxButton({
text: 'Change the Phone Properties',
onClick: function () {
form.itemOption("Contacts.phone", {
isRequired: true,
helpText: "+1(111)111-1111"
});
}
});
});Angular
To change an item property at runtime, bind the property that should be changed to a component property:
<dx-form
[(formData)]="employee">
<dxi-item dataField="firstName"></dxi-item>
<dxi-item dataField="lastName"></dxi-item>
<dxi-item itemType="group" caption="Contacts">
<dxi-item dataField="phone" [visible]="showPhone.value"></dxi-item>
<dxi-item dataField="email"></dxi-item>
</dxi-item>
</dx-form>
<dx-check-box #showPhone
text="Show the Phone Number"
[value]="true">
</dx-check-box>
import { DxFormModule, DxCheckBoxModule } from "devextreme-angular";
// ...
export class AppComponent {
employee = {
firstName: "John",
lastName: "Heart",
phone: "+1(213) 555-9392",
email: "jheart@dx-email.com"
}
}
@NgModule({
imports: [
// ...
DxFormModule,
DxCheckBoxModule
],
// ...
})Vue
To change an item property at runtime, bind the property that should be changed to a component property:
<template>
<div>
<DxForm :form-data="employee">
<DxSimpleItem data-field="firstName" />
<DxSimpleItem data-field="lastName" />
<DxGroupItem caption="Contacts">
<DxSimpleItem data-field="phone" :visible="isPhoneVisible" />
<DxSimpleItem data-field="email" />
</DxGroupItem>
</DxForm>
<DxCheckBox
text="Show the Phone Number"
v-model:value="isPhoneVisible" />
</div>
</template>
<script>
import 'devextreme/dist/css/dx.light.css';
import { DxForm, DxSimpleItem, DxGroupItem } from 'devextreme-vue/form';
import { DxCheckBox } from 'devextreme-vue/check-box';
const employee = {
firstName: 'John',
lastName: 'Heart',
phone: '+1(213) 555-9392',
email: 'jheart@dx-email.com'
};
export default {
components: {
DxForm, DxSimpleItem, DxGroupItem, DxCheckBox
},
data() {
return {
employee,
isPhoneVisible: true
};
},
};
</script>React
To change an item property at runtime, bind the property that should be changed to a state property:
import React from 'react';
import 'devextreme/dist/css/dx.light.css';
import { Form, SimpleItem, GroupItem } from 'devextreme-react/form';
import { CheckBox } from 'devextreme-react/check-box';
const employee = {
firstName: 'John',
lastName: 'Heart',
phone: '+1(213) 555-9392',
email: 'jheart@dx-email.com'
};
class App extends React.Component {
constructor() {
super();
this.state = {
isPhoneVisible: true
};
this.onCheckBoxValueChanged = this.onCheckBoxValueChanged.bind(this);
};
render() {
return (
<div>
<Form formData={employee}>
<SimpleItem dataField="firstName" />
<SimpleItem dataField="lastName" />
<GroupItem caption="Contacts">
<SimpleItem dataField="phone" visible={this.state.isPhoneVisible} />
<SimpleItem dataField="email" />
</GroupItem>
</Form>
<CheckBox
text="Show the Phone Number"
value={this.state.isPhoneVisible}
onValueChanged={this.onCheckBoxValueChanged} />
</div>
);
}
onCheckBoxValueChanged(e) {
this.setState({
isPhoneVisible: e.value
});
}
}
export default App;When you modify an item, the Form also refreshes all other items in its group. If an item is not in a group, the whole Form is refreshed. To update only your chosen items, wrap them into a separate group.
See Also
If you have technical questions, please create a support ticket in the DevExpress Support Center.