Your search did not match any results.


The Form widget allows you to visually represent and edit data stored in an object. The widget binds each layout item to a specific field in an existing data object. To display a simple form, you can assign the required object to the formData option. With the Form widget, you can specify the location of labels against corresponding editors and number of columns used in the form layout. Optionally, the widget can determine the column count based on current form width (adaptive rendering).
Copy to Plunker
<div id="form-demo"> <div class="widget-container"> <div>Select company:</div> <dx-select-box #company displayExpr="Name" [(dataSource)]="companies" [value]="companies[0]"></dx-select-box> <dx-form id="form" [(formData)]="company.value" [readOnly]="readOnly" [showColonAfterLabel]="showColon" [labelLocation]="labelLocation" [minColWidth]="minColWidth" [colCount]="colCount" [width]="width"></dx-form> </div> <div class="options"> <div class="caption">Options</div> <div class="option"> <span>Label location:</span> <dx-select-box [items]="['left', 'top']" [(value)]="labelLocation"></dx-select-box> </div> <div class="option"> <span>Columns count:</span> <dx-select-box [items]="['auto', 1, 2, 3]" [(value)]="colCount"></dx-select-box> </div> <div class="option"> <span>Min column width:</span> <dx-select-box [items]="[150, 200, 300]" [(value)]="minColWidth"></dx-select-box> </div> <div class="option"> <span>Form width:</span> <dx-number-box [max]="550" [(value)]="width"></dx-number-box> </div> <div class="option"> <dx-check-box text="readOnly" [(value)]="readOnly"></dx-check-box> </div> <div class="option"> <dx-check-box text="showColonAfterLabel" [(value)]="showColon"></dx-check-box> </div> </div> </div>
import { NgModule, Component, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxCheckBoxModule, DxSelectBoxModule, DxNumberBoxModule, DxFormModule } from 'devextreme-angular'; import { Company, 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 { companies: Company[]; labelLocation: string; readOnly: boolean; showColon: boolean; minColWidth: number; colCount: number; width: any; constructor( service: Service ) { this.labelLocation = "top"; this.readOnly = false; this.showColon = true; this.minColWidth = 300; this.colCount = 2; this.companies = service.getCompanies(); } } @NgModule({ imports: [ BrowserModule, DxCheckBoxModule, DxSelectBoxModule, DxNumberBoxModule, DxFormModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
/deep/ .widget-container { margin-right: 320px; padding: 20px; max-width: 550px; min-width: 300px; } /deep/ #form { margin-top: 25px; } /deep/ .options { padding: 20px; position: absolute; bottom: 0; right: 0; width: 260px; top: 0; background-color: #f5f5f5; } /deep/ .caption { font-size: 18px; font-weight: 500; } /deep/.option { margin-top: 10px; }
import { Injectable } from '@angular/core'; export class Company { ID: number; Name: string; Address: string; City: string; State: string; ZipCode: number; Phone: string; Fax: string; Website: string; } let companies: Object[] = [{ ID: 1, Name: "Super Mart of the West", Address: "702 SW 8th Street", City: "Bentonville", State: "Arkansas", ZipCode: 72716, Phone: "(800) 555-2797", Fax: "(800) 555-2171", Website: "" }, { ID: 2, Name: "Electronics Depot", Address: "2455 Paces Ferry Road NW", City: "Atlanta", State: "Georgia", ZipCode: 30339, Phone: "(800) 595-3232", Fax: "(800) 595-3231", Website: "" }, { ID: 3, Name: "K&S Music", Address: "1000 Nicllet Mall", City: "Minneapolis", State: "Minnesota", ZipCode: 55403, Phone: "(612) 304-6073", Fax: "(612) 304-6074", Website: "" }, { ID: 4, Name: "Tom's Club", Address: "999 Lake Drive", City: "Issaquah", State: "Washington", ZipCode: 98027, Phone: "(800) 955-2292", Fax: "(800) 955-2293", Website: "" }]; @Injectable() export class Service { getCompanies() : Company { return companies; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular 2 and DevExtreme here: // System.config({ transpiler: 'ts', typescriptOptions: { module: "commonjs", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" } }, paths: { 'npm:': '' }, map: { 'ts': 'npm:plugin-typescript@7.0.6/lib/plugin.js', 'typescript': 'npm:typescript@2.2.2/lib/typescript.js', '@angular/core': 'npm:@angular/core@4.1.0/bundles/core.umd.js', '@angular/common': 'npm:@angular/common@4.1.0/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler@4.1.0/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser@4.1.0/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@4.1.0/bundles/platform-browser-dynamic.umd.js', '@angular/http': 'npm:@angular/http@4.1.0/bundles/http.umd.js', '@angular/router': 'npm:@angular/router@4.1.0/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms@4.1.0/bundles/forms.umd.js', 'rxjs': 'npm:rxjs@5.3.1', 'devextreme': 'npm:devextreme@17.1', 'jquery': 'npm:jquery@3.1.1/dist/jquery.min.js', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'devextreme-angular': 'npm:devextreme-angular@17.1' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme-angular': { main: 'index.js', defaultExtension: 'js' } } });
<!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="" /> <link rel="dx-theme" data-theme="generic.light" href="" /> <link rel="dx-theme" data-theme="android5.light" href="" /> <link rel="dx-theme" data-theme="ios7.default" href="" /> <link rel="dx-theme" data-theme="" href="" /> <link rel="dx-theme" data-theme="win10.white" 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>