2

Angular 2 beta "FormBuilder"가 포함 된 중첩 된 폼 그룹 구조로 작업하고 있으며 중첩 된 폼 그룹에 값을 가져올 수 없습니다. 바인딩이 잘 작동하기 때문에 이상합니다. 양식에 "사용자"개체를 보낼 수 있으며 사용자 및 해당 주소의 모든 값을 채 웁니다. 그러나 양식 값을 보낼 때 (예 : HttpPost), 아래의 개체처럼 보입니다.각도 2 중첩 된 폼 그룹에 null 값이 포함되어 있음

FWIW 나는 Udemy의 Mosh Hamedani의 우수한 Angluar 2 코스를 따르고 있습니다. 관련 코드가 여기에 일치합니다. https://github.com/mosh-hamedani/angular2-course

아마도 내가 필요한 것은 내 코드를 어디에서 살펴야할까요?

다음은 내 양식 그룹입니다. {{form.value | JSON}} 내 양식의 말 :

<div class="col-md-6 well"> 
     <!--the "fieldset" element is needed for this kind of grouped layout.--> 
     <form [ngFormModel]="form" (ngSubmit)="save()"> 
      <fieldset> 
       <legend>User</legend> 
       <div class="form-group"> 
        <label>Name</label> 
        <input type="text" [(ngModel)]="user.name" ngControl="name" #name="ngForm" class="form-control"> 
        <div class="alert alert-danger" *ngIf="name.errors && name.touched"> 
         The user name is required. 
        </div> 
       </div> 
       *** Email and Phone similar *** 
      </fieldset> 
      <fieldset ngControlGroup="address"> 
       <legend>Address</legend> 
       <div class="form-group"> 
        <label>Street</label> 
        <input type="text" [(ngModel)]="user.address.street" ng-control="street" class="form-control"> 
       </div> 
       *** suite, city, and zip similar *** 
      </fieldset> 
      {{ form.value | json }} 
      <button [disabled]="!form.valid" class="btn btn-primary" type="submit">Save</button> 
     </form> 
    </div> 
:이 (간결하게 잘립니다) 내 템플릿 양식

constructor(
     fb: FormBuilder, 
     private router: Router, 
     private usersService: UsersService, 
     private params: RouteParams 
    ){ 
     this.form = fb.group({ 
      name: ['', Validators.required], 
      email: ['', EmailValidators.mustBeEmail], // I hadn't considered the obvious: if it doesn't exist it also doesn't qualify as email. 
      phone: [], 
      address: fb.group({ 
       street: [], 
       suite: [], 
       city: [], 
       zipcode: [] 
      }) 
     }); 
    } 

입니다 :

{ 
"name": "Leanne Graham", 
"email": "[email protected]", 
"phone": "1-770-736-8031 x56442", 
"address": { 
    "street": null, 
    "suite": null, 
    "city": null, 
    "zipcode": null 
    } 
} 

이 내 구성 요소의 생성자입니다

답변

0
ng-control="street" 

해야

,321 0

처럼 name