2016-01-08 17 views
7

oluşturduğum bir ControlGrouptheForm. Angular2: Hata - FormBuilder</strong><strong>kullanarak Property 'updateValue' türüne yok 'AbstractControl'

Ben işime yaramıştı bu

this.theForm.find('MainImageId').updateValue(id, true, true);

gibi bir kontrolün değerini güncellemek çalıştım ama WebStorm yanlış yapıyorum

Error:(148, 24) TS2339: Property 'updateValue' does not exist on type 'AbstractControl'.

söyleyerek bir hata gösteriyor? ve neden çalışıyor?

+0

, WebStorm çalışma zamanı bilgiye sahip değildir. Geri dönüş türünü, 'theForm.find() ' –

+0

Gotcha kaynak kodunda kontrol edin. Bu AbstractControl, gördünüz en açısal GitHub [buradan] (https://github.com/angular/angular/blob/2.0.0-beta.0/modules/angular2/src/common/forms/model.ts#L305-L411) . Ama ne yapmalıyım? –

cevap

9

Typescript casting object's property göre bu o

find şimdi get olduğunu saptamak sanırım (> = RC.5)

(<Control> this.theForm.find('MainImageId')) .updateValue(id, {onlySelf:true, emitEvent:true}); 

    // (<Control> this.theForm.find('MainImageId')) .updateValue(id, {onlySelf:true, emitEvent:true}); 

Düzenleme: İsteğe bağlı parametreler ikinci parametrede bir nesne olarak temin edilmektedir. zamanında var

+0

Güzel Bitti! [Buradan] (https://github.com/angular/angular/blob/2.0.0-beta.0/modules/angular2/src tarif edildiği gibi 4 kadar en az 1 ve kabul etmek için beklenen süre ama sadece bir parametre kabul /common/forms/model.ts#L239-L305). böylece 'updateValue (id);' hata ama 'updateValue (id, doğru, true) verir;' 'Hata diyor ki: (146, 5) TS2346: Sağlanan parametreleri çağrı target.' –

+0

herhangi imza eşleşmiyor Sen İsteğe bağlı parametrelerin bazılarına {} 'ihtiyaç duyabilir, ancak burada TS sınırlarıma ulaştığım anlaşılıyor. Belki başka biri biraz bilgi sağlayabilir. –

İlgili konular