[Angular 2] The form export from NgFormControl

In last post, we need to create an instanse variable:

sku: AbstructControl;

 

We can get rid of this by getting the exported form from NgFormControl, what we get is a directive, to get control, we need to call .control:

            <div class="form-group" [class.has-error]="!sku.valid && sku.touched">
                <label for="skuInput">SKU</label>
                <input type="text"
                class="form-control"
                id="skuInput"
                #sku = "form"
                placeholder="SKU"
                [ng-form-control]="myForm.controls['sku']">
            </div>

  

To use it:

<div *ng-if="!sku.control.valid"
               class="bg-warning">SKU is invalid</div>

 

Notic, this is only available for the control, not for the from, if we do:

            <div *ng-if="myForm.control.hasError('required', 'sku')">
                SKU is required
            </div>

Will cause error.

 

Code:

import {Component, View, FORM_DIRECTIVES, Validators, FormBuilder, NgIf} from 'angular2/angular2';

@Component({
    selector: 'demo-form-sku'
})
@View({
    directives: [FORM_DIRECTIVES, NgIf],
    template: `
       <div>
        <h2>Demo Form: Sku</h2>
        <!-- ngForm is attched to the form, and #f="form" form is also come from ngForm-->
        <form [ng-form-model]="myForm"
        (submit)="onSubmit(myForm.value)">
            <div class="form-group" [class.has-error]="!sku.valid && sku.touched">
                <label for="skuInput">SKU</label>
                <input type="text"
                class="form-control"
                id="skuInput"
                #sku = "form"
                placeholder="SKU"
                [ng-form-control]="myForm.controls['sku']">
            </div>
            <div *ng-if="!sku.control.valid"
               class="bg-warning">SKU is invalid</div>
            <button type="submit" class="btn btn-default">Submit
            </button>
            <div *ng-if="myForm.hasError('required', 'sku')">
                SKU is required
            </div>

        </form>
        <div *ng-if="!myForm.valid"
              class="bg-warning">Form is invalid</div>
       </div>
    `
})

export class DemoFormSku {
    myForm: ControlGroup;

//sku: AbstractControl;
constructor(fb:FormBuilder) { this.myForm = fb.group({ "sku": ["", Validators.required] }); this.sku = this.myForm.controls['sku']; } onSubmit(value){ console.log(value); } }

 

posted @ 2015-11-09 01:37  Zhentiw  阅读(345)  评论(0编辑  收藏  举报