支持Angular的响应式表单验证和模板驱动表单验证
效果图:
Using with Template driven Forms
* required
Angular
* required
| [email protected] | |
Angular |
Form status: "VALID"
Code
| import { Component, OnInit } from '@angular/core'; | |
| @Component({ | |
| templateUrl: './views/using-in-form.html' | |
| }) | |
| export class UsingWithFormExample implements OnInit { | |
| itemList = []; | |
| selectedItems = []; | |
| settings = {}; | |
| formModel = { | |
| name: null, | |
| email: '', | |
| skills: [] | |
| }; | |
| submitted = false; | |
| onSubmit() { this.submitted = true; } | |
| constructor() { } | |
| ngOnInit() { | |
| this.itemList = [ | |
| { "id": 1, "itemName": "Angular" }, | |
| { "id": 2, "itemName": "JavaScript" }, | |
| { "id": 3, "itemName": "HTML" }, | |
| { "id": 4, "itemName": "CSS" }, | |
| { "id": 5, "itemName": "ReactJS" }, | |
| { "id": 6, "itemName": "HTML5" } | |
| ]; | |
| this.settings = { | |
| text: "Select Skills", | |
| selectAllText: 'Select All', | |
| unSelectAllText: 'UnSelect All', | |
| classes: "myclass custom-class" | |
| }; | |
| } | |
| onItemSelect(item: any) { | |
| console.log(item); | |
| console.log(this.selectedItems); | |
| } | |
| OnItemDeSelect(item: any) { | |
| console.log(item); | |
| console.log(this.selectedItems); | |
| } | |
| onSelectAll(items: any) { | |
| console.log(items); | |
| } | |
| onDeSelectAll(items: any) { | |
| console.log(items); | |
| } | |
| } |
| <form (ngSubmit)="onSubmit()" #loginForm="ngForm" style="border: 1px solid #ccc; padding: 10px;"> | |
| <div class="form-group"> | |
| <label for="name">Skills</label> | |
| <angular2-multiselect [data]="itemList" [(ngModel)]="formModel.skills" | |
| [settings]="settings" | |
| (onSelect)="onItemSelect($event)" | |
| (onDeSelect)="OnItemDeSelect($event)" | |
| (onSelectAll)="onSelectAll($event)" | |
| (onDeSelectAll)="onDeSelectAll($event)" name="skills" #skills="ngModel" required> | |
| </angular2-multiselect> | |
| <div [hidden]="skills.valid" class="alert alert-danger"> | |
| <div [hidden]="!skills.hasError('required')">Atleast one Skill is required</div> | |
| </div> | |
| </div> | |
| <div class="form-group"> | |
| <label for="name">Name</label> | |
| <input type="text" class="form-control" id="name" required pattern="[a-zA-Z][a-zA-Z ]+" [(ngModel)]="formModel.name" name="name" | |
| #name="ngModel"> | |
| <div [hidden]="name.valid || name.pristine" class="alert alert-danger"> | |
| <div [hidden]="!name.hasError('required')">Name is required</div> | |
| <div [hidden]="!name.hasError('pattern')">Only alphabetsallowed</div> | |
| </div> | |
| </div> | |
| <div class="form-group"> | |
| <label for="name">Email Address</label> | |
| <input type="text" class="form-control" id="emailaddress" required [(ngModel)]="formModel.email" name="email" pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$" | |
| #email="ngModel"> | |
| <div [hidden]="email.valid || email.pristine" class="alert alert-danger"> | |
| <div [hidden]="!email.hasError('required')">Email is required</div> | |
| <div [hidden]="!email.hasError('pattern')">Email format should be <small><b>[email protected]</b></small></div> | |
| </div> | |
| </div> | |
| <button type="submit" class="btn btn-success btn-block" [disabled]="!loginForm.form.valid">Submit</button> | |
| </form> |
官网:https://cuppalabs.github.io/angular2-multiselect-dropdown/#/usinginform