Could someone offer some advice, is it possible to validate a child 
component.  The following code below works great with the following code.
What I can't seem to get working is for the parent component to fire the 
validation on the child.

Any help would be greatly appreciated.


    // ***********  Using this control on model driven form ***********
    //
    //                     markup
    //  <us_states (selected)="stateSelected($event)"></us_states> 
    //
    //          Create a model from control
    //   this.form = new FormGroup({state: new FormControl('-1', 
Validators.required) }); 
    //
    //         set the form control on selection
    //   stateSelected($event) {  
this.form.controls['state'].setValue($event.selected);}
    //
    // ***************************************************************** 



import { element } from 'protractor';
import { Component, OnInit, OnDestroy,  Input, Output, EventEmitter } from 
'@angular/core';
import { FormBuilder, FormGroup, FormControl, Validators }    from 
'@angular/forms';

@Component({
    selector: 'us_states',
    template: `
        <label for="state">State:</label>
        <select class="form-control" id="state" formControlName="state" #s 
(change)="OnSelect(s.value)" style="height: 28px;">
            <option value="-1" selected="selected">Select</option> 
            <option *ngFor="let w of states" value="{{w.State }}">
                {{ w.State }}
            </option>
        </select>
        <div *ngIf="validate">
            <div *ngIf="form.controls.state.touched && 
!form.controls.state.valid" class="alert alert-danger">
                <span class="glyphicon 
glyphicon-warning-sign"></span><strong> Warning!</strong> Please select a 
state!
            </div>
        </div>
    `
})
export class StatesComponent implements OnInit { 
    
    form: FormGroup;   
    @Output() selected = new EventEmitter();
    @Input() validate = false;
    @Input() reset = false;

    ngOnInit(): void {
        
    }
    
    ngOnDestroy() {
      this.selected.unsubscribe();
    }    

    OnSelect(selected) {
        this.selected.emit({selected: selected});
    }

states =  [
            {"State": "AL", "Name": "Alabama" },{"State": "AK", "Name": 
"Alaska"},
            {"State": "AS", "Name": "American Samoa"}, {"State": "AZ", 
"Name": "Arizona"},
            {"State": "AR", "Name": "Arkansas"},{"State": "AK", "Name": 
"Alaska"},
            {"State": "CA", "Name": "California"},{"State": "CO","Name": 
"Colorado"},
            {"State": "CT", "Name": "Connecticut"},{"State": "DE", "Name": 
"Delaware"},
            {"State": "DC", "Name": "District Of Columbia"},{"State": "FM", 
"Name": "Federated States of Micronesia"},
            {"State": "FL", "Name": "Florida"},{"State": "GA", "Name": 
"Georgia"},
            {"State": "GU", "Name": "Guam"},{"State": "HI", "Name": 
"Hawaii"},
            {"State": "ID", "Name": "Idaho"},{"State": "IL", "Name": 
"Illinois"},
            {"State": "IN", "Name": "Indiana"},{"State": "IA", "Name": 
"Iowa"},
            {"State": "KS", "Name": "Kansas"},{"State": "KY",  "Name": 
"Kentucky"},
            {"State": "LA", "Name": "Louisiana"},{"State": "ME", "Name": 
"Maine"},
            {"State": "MH", "Name": "Marshall Islands"},{"State": "MD", 
"Name": "Maryland"},
            {"State": "MA", "Name": "Massachusetts"},{"State": "MI", 
"Name": "Michigan" },
            {"State": "MN", "Name": "Minnesota"},{"State": "MS", "Name": 
"Mississippi"},
            {"State": "MO", "Name": "Missouri"},{"State": "MT", "Name": 
"Montana"},
            {"State": "NE", "Name": "Nebraska"},{"State": "NV", "Name": 
"Nevada"},
            {"State": "NH", "Name": "New Hampshire"},{"State": "NJ", 
"Name": "New Jersey"},
            {"State": "NM", "Name": "New Mexico"},{"State": "NY", "Name": 
"New York"},
            {"State": "NC", "Name": "North Carolina"},{"State": "ND", 
"Name": "North Dakota"},
            {"State": "MP", "Name": "Northern Mariana Islands"},{"State": 
"OH", "Name": "Ohio"},
            {"State": "OK", "Name": "Oklahoma"},{"State": "OR", "Name": 
"Oregon"},
            {"State": "PW", "Name": "Palau"},{"State": "PA", "Name": 
"Pennsylvania"},
            {"State": "PR", "Name": "Puerto Rico"},{"State": "RI", "Name": 
"Rhode Island"},
            {"State": "SC", "Name": "South Carolina"},{ "State": "SD", 
"Name": "South Dakota"},
            {"State": "TN", "Name": "Tennessee"},{"State": "TX", "Name": 
"Texas"},
            {"State": "UT", "Name": "Utah"},{"State": "VT", "Name": 
"Vermont"},
            {"State": "VI", "Name": "Virgin Islands"},{"State": "VA", 
"Name": "Virginia"},
            {"State": "WA", "Name": "Washington"},{"State": "WV", "Name": 
"West Virginia"},
            {"State": "WI", "Name": "Wisconsin"},{"State": "WY", "Name": 
"Wyoming"}
         ]  



}

-- 
You received this message because you are subscribed to the Google Groups 
"Angular" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to