2017-04-27 7 views
0

ich bin neu in angular2 und ich möchte ein Formular zum Einfügen von Daten mein Problem ist, wenn ich klicke erstellen zeigt "Browser Sync getrennt" auch zunächst die beiden Felder Name und Adresse zeigen die Werte, die ich gab sie aber Postleitzahl doesn't.and schließlich gibt es ein Fehler-Fehler: „Kann nicht finden Kontrolle mit Pfad:‚Adresse -> Adresse‘ hier ist mein Code component.htmlangular2 Formulare Validierung Fehlermeldung

<div class="container"> 
<h3>Add user:</h3> 
<form [formGroup]="myForm" novalidate (ngSubmit)="Create(myForm.value, myForm.valid)"> 
<ul> 
    <div class="form-group"> 
     <label for="name">name:</label> <input type="text" class="form-control" formControlName="name"><br/><small [hidden]="myForm.controls.name.valid || (myForm.controls.name.pristine && !submitted)" class="text-danger"> 
     name is required. 
      </small> 
      </div> 

<div class="form-group" formGroupName="adress"> 
     <label for="">adress</label> 
     <input type="text" class="form-control" formControlName="street"> 
     <small [hidden]="myForm.controls.adress.controls.street.valid || (myForm.controls.adress.controls.street.pristine && !submitted)" class="text-danger"> 
      street required 
      </small> 


<div class="form-group" formGroupName="adress"> 
     <label for="">postcode</label> 
     <input type="text" class="form-control" formControlName="postcode"> 
    </div> 

<button class="btn btn-default" (click)="CreateVersion()">create</button> 
     </div> 

    </ul> 
    </form> 
    </div> 

component.ts

import { Component ,OnInit} from '@angular/core'; 
import {Service} from '../services/service.component'; 
import { FormsModule,FormGroup, FormControl, FormBuilder, Validators } from '@angular/forms'; 
import {Observable} from 'rxjs/Rx'; 
import { User } from './user.interface'; 


@Component({ 
moduleId: module.id, 
selector: 'version', 
templateUrl:'./version.component.html', 
styleUrls:['./version.component.css'] 
}) 

export class VersionComponent implements OnInit{ 

public myForm: FormGroup; 


constructor(){}; 

    ngOnInit() { 

     this.myForm = new FormGroup({ 
      name: new FormControl('', [<any>Validators.required, <any>Validators.minLength(5)]), 
      adress: new FormGroup({ 
       street: new FormControl('', <any>Validators.required), 
       postcode  : new FormControl('') 
      }) 
     }); 

    const people = { 
       name: 'Jae', 
       adress: { 
       street: 'High street', 
       postcode: '94043' 
      } 
     }; 

     (<FormGroup>this.myForm) 
      .setValue(people, { onlySelf: true }); 
} 
    Create(conf: User, isValid: boolean) { 
     this.submitted = true; 
     console.log(model, isValid); 
    } 
} 

Benutzer

export interface User { 
name: string; 
    adress?: { 
    street?: string; 
    postcode?: string; 
    } 
    } 
+0

Wo es „Browser Sync getrennt“ –

+0

oben auf der Seite auf der zu sehen ist links und es lädt die Seite – sarra

+0

das ist nur ein Teil des Codes, ich kann nicht sehen, wo die Seite neu geladen wird. –

Antwort

2

Ich denke, es ist, weil Sie Ihre Postleitzahl mit formGroupName zweimal gewickelt haben, um Ihre HTML so sein sollte: -

<div class="container"> 
    <h3>Add user:</h3> 
    <form [formGroup]="myForm" novalidate (ngSubmit)="Create(myForm.value, myForm.valid)"> 
     <ul> 
      <div class="form-group"> 
       <label for="name">name:</label> <input type="text" class="form-control" formControlName="name"><br/> 
       <small [hidden]="myForm.controls.name.valid || (myForm.controls.name.pristine && !submitted)" 
         class="text-danger"> 
        name is required. 
       </small> 
      </div> 

      <div class="form-group" formGroupName="adress"> 
       <label for="">adress</label> 
       <input type="text" class="form-control" formControlName="street"> 
       <small [hidden]="myForm.controls.adress.controls.street.valid || (myForm.controls.adress.controls.street.pristine && !submitted)" 
         class="text-danger"> 
        street required 
       </small> 

       <label for="">postcode</label> 
       <input type="text" class="form-control" formControlName="postcode"> 

       <button class="btn btn-default" (click)="CreateVersion()">create</button> 
      </div> 

     </ul> 
    </form> 
</div> 
+0

ok also die postkarte ist jetzt angezeigt, aber es ist das gleiche, wenn ich klicke create es lädt die seite und "browser sync getrennt" wird angezeigt – sarra

+0

Großartig, wie laufen Sie die Website - mit Schluck oder Lite-Server oder so ähnlich? –

+0

ich benutze express server – sarra

Verwandte Themen