Saya menggunakan RC4 dan saya mendapatkan kesalahan Tidak ada perintah dengan "exportAs" disetel ke "ngForm" karena template saya:
<div class="form-group">
<label for="actionType">Action Type</label>
<select
ngControl="actionType"
===> #actionType="ngForm"
id="actionType"
class="form-control"
required>
<option value=""></option>
<option *ngFor="let actionType of actionTypes" value="{{ actionType.label }}">
{{ actionType.label }}
</option>
</select>
</div>
boot.ts:
import {disableDeprecatedForms, provideForms} from '@angular/forms';
import {bootstrap} from '@angular/platform-browser-dynamic';
import {HTTP_PROVIDERS, Http} from '@angular/http';
import {provideRouter} from '@angular/router';
import {APP_ROUTER_PROVIDER} from './routes';
import {AppComponent} from './app.component';
bootstrap(AppComponent, [ disableDeprecatedForms(), provideForms(), APP_ROUTER_PROVIDER, HTTP_PROVIDERS]);
/// jadi inilah DropdownList saya:
<fieldset ngControlGroup="linkedProcess" >
<div ngControlGroup="Process" >
<label>Linked Process</label>
<div class="form-group">
<select
ngModel
name="label"
#label="ngModel"
id="label"
class="form-control" required
(change)="reloadProcesse(list.value)"
#list>
<option value=""></option>
<!--<option value=`{{ActionFormComponent.getFromString('GET'')}}`></option>-->
<option *ngFor="let processus of linkedProcess?.processList?.list; let i = index"
value="{{ processus[i].Process.label}}">
{{processus.Process.label}}
</option>
</select>
</div>
</div>
// komponen saya ts:
saya mewakilinya dalam bentuk lama seperti ini:
categoryControlGroups:ControlGroup[] = [];
categories:ControlArray = new ControlArray(this.categoryControlGroups);
dan sekarang saya melakukan ini:
categoryControlGroups:FormGroup[] = [];
categories:FormArray = new FormArray(this.categoryControlGroups);
Anda pikir itu penyebab prob ??
Jawaban:
Sejak 2.0.0.rc6 :
Pendeknya:
FormsModule
ke file@NgModule
.ReactiveFormsModule
ke file@NgModule
.Jadi, tambahkan ke Anda
app.module.ts
atau yang setara:Gagal memiliki salah satu modul ini dapat menyebabkan kesalahan, termasuk yang Anda hadapi:
Jika Anda ragu-ragu, Anda dapat menyediakan baik itu
FormsModule
danReactiveFormsModule
bersama-sama, tetapi mereka sepenuhnya fungsional secara terpisah. Saat Anda menyediakan salah satu modul ini, direktif formulir default dan penyedia dari modul itu akan tersedia untuk Anda di seluruh aplikasi.Formulir Lama menggunakan
ngControl
?Jika Anda memiliki modul-modul itu di tangan Anda
@NgModule
, mungkin Anda menggunakan arahan lama, sepertingControl
, yang menjadi masalah, karena tidak adangControl
di formulir baru. Itu diganti lebih atau kurang * olehngModel
.Misalnya, padanannya
<input ngControl="actionType">
adalah<input ngModel name="actionType">
, jadi ubah itu di template Anda.Demikian pula, ekspor dalam kontrol tidak
ngForm
lagi, sekarangngModel
. Jadi, dalam kasus Anda, ganti#actionType="ngForm"
dengan#actionType="ngModel"
.Jadi template yang dihasilkan harus (
===>
di mana diubah):* Lebih atau kurang karena tidak semua fungsionalitas
ngControl
dipindahkan kengModel
. Beberapa baru saja dihapus atau berbeda sekarang. Contohnya adalahname
atribut, kasus yang Anda alami saat ini.sumber
<input>
di dalam a*ngFor
? (Mungkin tidak akan bekerja tapi coba ini dan katakan apakah pesan hilang:<option *ngFor="let actionType of actionTypes; let i = index" value="{{ actionTypes[i].label }}"> {{ actionTypes[i].label }} </option>
)*ngFor
?*ngFor
menjadi sesuatu selainactionType
, ada gunanya?Saya menghadapi masalah yang sama. Saya telah melewatkan tag impor modul formulir di app.module.ts
sumber
Saya memiliki masalah yang sama yang diselesaikan dengan menambahkan FormsModule ke .spec.ts:
lalu menambahkan impor ke beforeEach:
sumber
Jika Anda mendapatkan ini sebagai gantinya:
Yang dilaporkan sebagai bug di github , maka kemungkinan itu bukan bug karena Anda mungkin:
[(ngModel)]]=
, ORformControlName
, denganngModel
direktif . Ini "tidak digunakan lagi di Angular v6 dan akan dihapus di Angular v7" , karena ini menggabungkan kedua strategi bentuk, menjadikannya:Ketika Anda memiliki masukan seperti ini:
Ini akan menunjukkan peringatan tentang strategi bentuk campuran di konsol browser:
Namun, jika Anda menambahkan
ngModel
sebagai nilai dalam variabel referensi, contoh:Kesalahan di atas kemudian dipicu dan tidak ada peringatan tentang pencampuran strategi yang ditampilkan.
sumber
Dalam kasus saya, saya harus menambahkan
FormsModule
danReactiveFormsModule
keshared.module.ts
juga:(terima kasih kepada @Undrium untuk contoh kodenya ):
sumber
Saya mengalami masalah ini dan saya menyadari bahwa saya tidak mengikat komponen saya ke variabel.
Berubah
<input #myComponent="ngModel" />
untuk
<input #myComponent="ngModel" [(ngModel)]="myvar" />
sumber
Cara yang benar untuk menggunakan formulir sekarang di Angular2 adalah:
Cara lama tidak berfungsi lagi
sumber
Juga menyadari masalah ini muncul saat mencoba menggabungkan formulir reaktif dan pendekatan formulir Templat. Saya memiliki
#name="ngModel"
dan[formControl]="name"
pada elemen yang sama. Menghapus salah satunya memperbaiki masalah. Juga bukan berarti jika Anda menggunakan#name=ngModel
Anda juga harus memiliki properti seperti ini[(ngModel)]="name"
, jika tidak, Anda masih akan mendapatkan kesalahan. Ini berlaku untuk sudut 6, 7 dan 8 juga.sumber
Pastikan Anda memiliki kedua
ngModel and name
atribut yang Anda pilih. Juga Pilih adalah komponen formulir dan bukan seluruh formulir sehingga deklarasi referensi lokal yang lebih logis adalah: -Satu hal lagi yang penting adalah pastikan Anda mengimpor baik
FormsModule
dalam kasus pendekatan didorong template atauReactiveFormsModule
dalam kasus pendekatan Reaktif. Atau Anda dapat mengimpor keduanya yang juga sangat bagus.sumber
jika
ngModule
tidak berfungsi di input berarti coba ... hapus tanda kutip ganda di sekitarngModule
Suka
bukan di atas
sumber
Saya mengalami masalah ini karena ada kesalahan ketik di template saya di dekat [(ngModel)]]. Braket ekstra. Contoh:
sumber