Your search did not match any results.

Customize Item


The Form component can create form items automatically for each field of the formData object. If you’d prefer to configure form items manually, pass the required array of configuration objects to the items property. You can specify the name of the bound data field, editor type, editor configuration, validation properties (etc.) for each form item.

Copy to CodeSandBox
<div class="long-title"> <h3>Employee Details</h3> </div> <div id="form-container"> <dx-form id="form" [colCount]="2" [formData]="employee"> <dxi-item dataField="FirstName" [editorOptions]="{ disabled: true }"></dxi-item> <dxi-item dataField="Position" editorType="dxSelectBox" [editorOptions]="{ items: positions, searchEnabled: true, value: '' }"> <dxi-validation-rule type="required" message="Position is required"></dxi-validation-rule> </dxi-item> <dxi-item dataField="LastName" [editorOptions]="{ disabled: true }"></dxi-item> <dxi-item dataField="HireDate" editorType="dxDateBox" [editorOptions]="{ value: null, width: '100%' }"> <dxi-validation-rule type="required" message="Hire date is required"></dxi-validation-rule> </dxi-item> <dxi-item dataField="BirthDate" editorType="dxDateBox" [editorOptions]="{ disabled: true, width: '100%' }"></dxi-item> <dxi-item dataField="Address"></dxi-item> <dxi-item dataField="Notes" editorType="dxTextArea" [editorOptions]="{ height: 90 }" [colSpan]="2"></dxi-item> <dxi-item dataField="Phone" [editorOptions]="{ mask: '+1 (X00) 000-0000', maskRules: rules }"></dxi-item> <dxi-item dataField="Email"></dxi-item> </dx-form> </div>
import { NgModule, Component, ViewChild, enableProdMode, AfterViewInit } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxSelectBoxModule, DxTextAreaModule, DxFormModule, DxFormComponent } from 'devextreme-angular'; import { Employee, Service } from './app.service'; if(!/localhost/.test( { enableProdMode(); } @Component({ selector: 'demo-app', providers: [ Service ], templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'] }) export class AppComponent implements AfterViewInit { @ViewChild(DxFormComponent, { static: false }) myform: DxFormComponent; employee: Employee; positions: string[]; rules: Object; constructor(service: Service) { this.employee = service.getEmployee(); this.positions = service.getPositions(); this.rules = { 'X': /[02-9]/ }; } ngAfterViewInit() { this.myform.instance.validate() } } @NgModule({ imports: [ BrowserModule, DxSelectBoxModule, DxTextAreaModule, DxFormModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
::ng-deep #form-container { margin: 10px 10px 30px; } ::ng-deep #button { float: right; margin-top: 20px; } ::ng-deep .long-title h3 { font-family: 'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana; font-weight: 200; font-size: 28px; text-align: center; margin-bottom: 20px; }
import { Injectable } from '@angular/core'; export class Employee { ID: number; FirstName: string; LastName: string; Position: string; BirthDate: string; HireDate: string; Notes: string; Address: string; Phone: string; Email: string; } let employee : Employee = { ID: 1, FirstName: "John", LastName: "Heart", Position: "CEO", BirthDate: "1964/03/16", HireDate: "1995/01/15", Notes: "John has been in the Audio/Video industry since 1990. He has led DevAv as its CEO since 2003.\r\n\r\nWhen not working hard as the CEO, John loves to golf and bowl. He once bowled a perfect game of 300.", Address: "351 S Hill St., Los Angeles, CA", Phone: "360-684-1334", Email: "" }; let positions : string[] = [ "HR Manager", "IT Manager", "CEO", "Controller", "Sales Manager", "Support Manager", "Shipping Manager" ]; @Injectable() export class Service { getEmployee() : Employee { return employee; } getPositions() : string[] { return positions } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular and DevExtreme here: // System.config({ transpiler: 'ts', typescriptOptions: { module: "system", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" }, 'devextreme/localization.js': { "esModule": true } }, paths: { 'npm:': '' }, map: { 'ts': 'npm:plugin-typescript@8.0.0/lib/plugin.js', 'typescript': 'npm:typescript@3.5.3/lib/typescript.js', '@angular': 'npm:@angular', 'tslib': 'npm:tslib@2.1.0/tslib.js', 'rxjs': 'npm:rxjs@6.4.0', 'rrule': 'npm:rrule@2.6.6/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.26.0/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@20.2.6', 'jszip': 'npm:jszip@3.6.0/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@0.10.3/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.0.18', 'devexpress-gantt': 'npm:devexpress-gantt@2.0.24', 'devextreme-angular': 'npm:devextreme-angular@20.2.6', 'preact': 'npm:preact@10.5.13/dist/preact.js', 'preact/hooks': 'npm:preact@10.5.13/hooks/dist/hooks.js' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme/events/utils': { main: 'index' }, 'devextreme/events': { main: 'index' }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js' } }, packageConfigPaths: [ "npm:@angular/*/package.json", "npm:@angular/common/*/package.json", "npm:rxjs/package.json", "npm:rxjs/operators/package.json", "npm:devextreme-angular/*/package.json", "npm:devextreme-angular/ui/*/package.json", "npm:devextreme-angular/package.json", "npm:devexpress-diagram/package.json", "npm:devexpress-gantt/package.json", ] });
<!DOCTYPE html> <html xmlns=""> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="" /> <link rel="stylesheet" type="text/css" href="" /> <script src=""></script> <script src=""></script> <script src=""></script> <script src=""></script> <script src="config.js"></script> <script> System.import('app').catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>