저는 TypeScript 및 Angular2로 몸살을 앓고 있습니다. 중첩 된 개체 구조가있는 API로 작업하고 있습니다. 내 모델에서 API의 리소스를 미러링하고 싶습니다. 이다Angular2 FormBuilder 및 중첩 된 객체 속성이 반환되지 않음
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { InquireService } from './inquire.service';
import { Inquiry } from './inquiry';
@Component({
selector: 'inquire-form',
templateUrl: './inquire-form.component.html'
})
export class InquireFormComponent implements OnInit {
inquiryForm: FormGroup;
inquiry = new Inquiry;
constructor(
private formBuilder: FormBuilder,
private inquireService: InquireService) {}
ngOnInit(): void {
this.buildForm();
}
buildForm(): void {
this.inquiryForm = this.formBuilder.group({
'firstName': [
this.inquiry.name.first, [
Validators.required,
Validators.minLength(2),
Validators.maxLength(50)
]
], ...
}
}
나는 내 길을 쳤을 때 내가 오류 :
Error: Uncaught (in promise): TypeError: Cannot read property 'first' of undefined
타이프에 정의 된 모델/자원, "귀하": 같은
// inquiry.ts
export class Inquiry {
name: {
first: string,
last: string
};
email: string;
phone: string;
question: string;
}
내 폼 구성 요소입니다
this.inquiry.name
을 기록하면 실제로는 undefined
이지만 그 이유는 알 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
'name'속성의 유형 서명이 무엇인지 명시했지만 실제로는 초기화하지 않았습니다. 그것을 zed. –
흠. 새 Inquiry 인스턴스 (생성자 위)를 만들 때 초기화되지 않습니까? – Brandon
"Inquiry"객체에는 '{first : string, last : string}'및'email','phone' 및'question' 유형의'name '속성이 4 개 포함되어 있다고 선언했습니다. '문자열'타입의. 어떤 속성도 명시 적으로 초기화되지 않으므로 기본값 ('undefined') 만 있습니다. –