2017-10-07 4 views
0

ng build --prod를 사용하여이 코드를 건물에 FormBuilder 예를 각도 2 빌드 --prod 아래 코드 <code>this.fb</code>에서

return this.fb.group({ 
    name: ['', [<any>Validators.required]], 
    phone: ['', [<any>Validators.required]], 
    email: ['', [<any>Validators.required, Validators.email]], 
    website: ['', [<any>Validators.pattern(web_pattern)]] 
    tax_code: ['', [<any>Validators.required,Validators.maxLength(50)]], 

    owner: this.fb.group({ 
    first_name: ['', [<any>Validators.required, Validators.maxLength(30)]], 
    last_name: ['', [<any>Validators.required, Validators.maxLength(30)]], 
    phone: ['', [<any>Validators.required]], 
    email: ['', [<any>Validators.required, Validators.email]], 
    password: ['', [<any>Validators.required]], 
    }) 

}); 

이다 " 'AbstractControl'유형에 존재하지 않는 속성 '컨트롤'"실패는 진술 실패 'controls'속성이 'AbstractControl'유형에 존재하지 않습니다.. owner 키가 FormControl 대신 FormGroup 인스턴스 인 문제가 있습니다. 그러나 각도 문서에 따르면 FormGroup 내에 FormGroup을 추가하는 것이 유효합니다.

이 코드는 --prod없이 완벽하게 구성됩니다. 나는 --prod이 엄격한 형식 검사를한다는 것을 알고 있습니다. 이 문제를 해결하는 방법을 이해할 수 없습니다. 당신의 폼 컨트롤의

+1

는이 구성 요소에 대한 템플릿을 추가 할 수의 예를 AOT working? – yurzui

+0

주세요 [mcve] – jonrsharpe

+0

yurzui가 올바른 방향이라고 생각합니다. 그것은 아마 당신의 HTML에서 무언가입니다.'form.controls.owner.controls.first_name'과 같은 것은'form.controls.owner [ 'controls']. first_name'이 될 수 있습니다. – LLai

답변

0

어떤 곳은이

form.get('qualifications').controls 

또는 form.controls.qualifications.controls.degree 또는 form.controls.qualifications['controls'].degree 같은 어떤 것을 사용해야하며이 친절하지 aot입니다.

템플릿 대신 구성 요소 안에 넣어야합니다.

템플릿

<div class="col-md-12" *ngFor = "let address of getAddresses(user) ; let i = index"> 

구성 요소

getAddresses(form){ 
    return form.get('addresses').controls; 
    } 

같은과 code