2017-10-07 7 views
0

Dans le code ci-dessous this.fb est FormBuilder exemple "contrôle» de propriété n'existe pas sur le type 'AbstractControl'" --prod angulaire 2 génération échoue

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]], 
    }) 

}); 

Sur la construction de ce code à l'aide ng build --prod, il échoue en indiquant: La propriété 'controls' n'existe pas sur le type 'AbstractControl'. Il rencontre un problème avec la clé owner, qui est une instance FormGroup, au lieu de FormControl. Cependant, selon docs angulaire est valide pour ajouter un FormGroup dans un FormGroup.

Ce code se construit parfaitement sans --prod. Je comprends que --prod conduit à une vérification stricte. Je ne suis pas capable de comprendre comment corriger cela.

+1

Pouvez-vous ajouter modèle pour ce composant? – yurzui

+0

S'il vous plaît donner un [mcve] – jonrsharpe

+0

Je pense que yurzui est sur la bonne voie. C'est probablement quelque chose dans votre code HTML, quelque chose comme 'form.controls.owner.controls.first_name' pourrait devenir' form.controls.owner ['controls']. First_name' – LLai

Répondre

0

Certains où dans votre contrôle de formulaire vous devez utiliser quelque chose comme ça

form.get('qualifications').controls 

ou form.controls.qualifications.controls.degree ou form.controls.qualifications['controls'].degree et ce n'est pas aot amical.

Vous devez placer ceci à l'intérieur du composant à la place du modèle Quelque chose comme ceci.

Modèle

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

Component

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

A working AOT exemple du même et code