2016-05-31 30 views
11

Bu benim form edilir:Angular2 basit formu bina ControlContainer yok sağlayıcı

app.component:

<form [ngFormModel]="myForm"> 
     <my-child-component></my-child-component> 
    </form>  

app.component sınıfı:

constructor (private _formBuilder : FormBuilder) { 
    this.myForm = _formBuilder.group({ 
     firstName : ["",Validators.required] 
    }); 
} 

my-çocuk bileşenli :

 <input type="text" ngControl="firstName"> 

Hata: Ben bu ödeme şekli uygulama bileşeni kendi içinde girdi taşımak, ama benim giriş çocuk unsuru içinde ise

No provider for ControlContainer 
    [ERROR ->]<md-input 
      ngControl="firstName" 
      placeholder="First name"> 

.

FORM_DIRECTIVES ve FORM_PROVIDERS üst uygulama düzeyinde enjekte ediliyor, onların kılavuzları başına tam olarak her şeyi yaptım.

DÜZENLEME: Çocuğa veya uygulama bileşenine FORM_DIRECTIVES eklemeyi denedi, başarı yok.

cevap

8

yerine ngControl ait ngFormControl direktifini kullanın ve sadece bu gibi çocuğa Input içine kontrol değişken geçirebilirsiniz:

<form [ngFormModel]="myForm"> 
    <my-child-component [control]="myForm.controls.firstName"></my-child-component> 
</form> 

Child.component

@Component({ 
    selector: 'my-child-component', 
    template: ` 
    <input type="text" [ngFormControl]="control"> 
    `, 
    directives: [FORM_DIRECTIVES] 
}) 
export class Child { 
    @Input() control: Control; 
} 

Ayrıca bkz plunkr https://plnkr.co/edit/ydRAOmFG6FU6lxTonWzj?p=preview

NgControl yönergesi Çocuk şablonu içinde gereklidir form etiketi

bu sorunu giderilmiştir, ayrıca

+0

Teşekkür bakın, ama burada gerçekten konu ne anlatmak lütfen? Bu onu düzeltir neden –

+0

ngControl şablonu içinde bir ebeveyn formu etiketi (> şablon Çocuk) gereklidir. – yurzui

+0

oldukça anlamıyorum - – FlavorScape

İlgili konular