Açısal hata: “Bilinen bir 'input' özelliği olmadığı için 'ngModel' dosyasına bağlanamıyor”


296

Açısal 4 kullanıyorum ve konsolda bir hata alıyorum:

'İnput' öğesinin bilinen bir özelliği olmadığından 'ngModel' öğesine bağlanamıyor

Bunu nasıl çözebilirim?


28
Sen eklemem gerekiyor FormsModuleiçin imports: []kullandığınız modülün ngModel. Aksi takdirde kodunuzu gönderin.
Günter Zöchbauer

9
Öyle bir düşüncem olamaz tüm yeni Eğik 2 ve 4 geliştiricileri (ben dahil) tam bu konuyu vurmak olacak. Ne zaman açısal kullanılan ve son kez etmedi ngModel bir yere kullanmak istiyor? FormsModule'un neden sadece varsayılan olarak dahil olmadığını anlamıyorum ....
Mike Gledhill

Değer için, Forms Validation ile çalışırken IONIC-4'te (4.11.0) bu hatayla karşılaştım. FormControlName = "myControl" formun herhangi bir yerinde herhangi bir <ion-input> eklemek dışında başka bir şey yapmazsanız, ngModel bağlama hata iletisi alıyorum. FormControlName1 = "myControl" gibi alternatif özellikler bu hataya neden olmaz.
Memetican

Yanıtlar:


676

Form girişleri için iki yönlü veri bağlama özelliğini kullanabilmek için FormsModulepaketi Açısal modülünüze aktarmanız gerekir .

import { FormsModule } from '@angular/forms';

@NgModule({
    imports: [
         FormsModule      
    ]

DÜZENLE

Aynı sorunla ilgili çok sayıda yinelenen soru olduğundan, bu yanıtı geliştiriyorum.

İki olası neden var

  • Eksik FormsModule, dolayısıyla bunu Modülünüze ekleyin,

    import { FormsModule } from '@angular/forms';
    
    @NgModule({
        imports: [
            FormsModule      
        ]
  • Giriş [(ngModel)]etiketindeki sözdizimini / yazımını denetleyin


27
NgModel ve FormsModule arasındaki ilişki nedir? Ancak bu benim için çalışmıyor.
Govind

4
FormsModule, form öğeleri hakkında girdi, seçme, vb. Gibi ek yönergeler sağlar. Form öğesi bağlarını içeren bileşenlerinizi bildiren aynı modülde FormsModule'u almayı unutmayın.
Bob

1
Bunu bir bileşen ts dosyasında kullanırsak ne yaparız?
Mike Warren

1
component.ts içine içe
aktarmamalısınız

@Sajeetharan Bileşenimde bazı form öğelerinde ng-modelini kullanan bir şablonum varsa ne olur?
CJBrew

18

Bu doğru bir cevap. FormsMoudle'u içe aktarmanız gerekir

ilk olarak app.module.ts

**

import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { NgModule  } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    FormsModule,
    ReactiveFormsModule ,
    BrowserModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

** app.component.spec.ts dosyasında ikinci

import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';
import { FormsModule } from '@angular/forms';
describe('AppComponent', () => {
  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        RouterTestingModule,
        FormsModule
      ],
      declarations: [
        AppComponent
      ],
    }).compileComponents();
  }));

Saygılarımla ve umut yardımcı olacaktır


İkinci adım, app.component.ts dosyasının değiştirilmesi gerekli midir?
Konrad Viltersten

9

Sizin ngModelo aramalarınızdan bir parçası değil çünkü çalışmıyor NgModulehenüz.

Uygulamanız boyunca NgModulekullanma yetkisine sahip olduğunuzu söylemelisiniz, -> -> içine ngModelekleyerek bunu yapabilirsiniz .FormsModuleapp.module.tsimports[]

import { FormsModule } from '@angular/forms';

@NgModule({

   imports: [ FormsModule ],       // HERE

   declarations: [ AppComponent ],
   bootstrap: [ AppComponent ]
 })

7

Karma / Jasmine ile Angular 6 Uygulamamı test ederken bu hatayla karşılaştım. FormsModuleÜst düzey modülüme zaten aktarmıştım . Ancak yeni bir bileşen eklediğimde [(ngModel)]testlerim başarısız oldu. Bu durumda, FormsModulebenim ithal etmek gerekiyordu TestBed TestingModule.

beforeEach(async(() => {
  TestBed.configureTestingModule({
    imports: [
      FormsModule
    ],
    declarations: [
      RegisterComponent
    ]
  })
  .compileComponents();
}));

5

Soruna yukarıda belirtilen tüm çözümler doğrudur. Ancak tembel yükleme kullanıyorsanız, FormsModuleiçinde formlar bulunan alt modülde içe aktarılması gerekir. İçine eklemek app.module.tsyardımcı olmaz.


4

Bunu app.module.tsekleyin:

import { FormsModule, ReactiveFormsModule } from '@angular/forms';

@NgModule({
    declarations: [AppComponent],
    imports: [FormsModule],
})

6
Bu cevap mevcut cevaplara ne gibi bir artı değer katıyor?
Günter Zöchbauer

4
cevaba herhangi bir değer eklemez ve kodun biçimi yanlıştır. Acemi için kafa karıştırıcı.
ssmsnet

3
Bu kod snippet'i soruyu çözebilir, ancak bir açıklama da dahil olmak , yayınınızın kalitesini artırmaya yardımcı olur. Gelecekte okuyucular için soruyu cevapladığınızı ve bu kişilerin kod önerinizin nedenlerini bilmeyebileceğini unutmayın.
Clijsters

3

resim açıklamasını buraya girinYukarıda belirtilen her şeyi denedim, ama yine de çalışmıyor.

ama sonunda sorunu Açısal sitede buldum. module.ts formModule almaya çalışın. resim açıklamasını buraya girin



2

Angular 7.xx ile güncelleyin, modüllerimden birinde aynı sorunla karşılaşın .

Bağımsız modülünüzde bulunuyorsa, şu ekstra modülleri ekleyin:

import { CommonModule } from "@angular/common";
import { FormsModule } from "@angular/forms";

@NgModule({
  imports: [CommonModule, FormsModule], // the order can be random now;
  ...
})

İçinde bulunuyorsa app.module.tsşu modülleri ekleyin:

import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';

@NgModule({
  imports:      [ FormsModule, BrowserModule ], // order can be random now
  ...
})

Davayı kanıtlamak için basit bir demo .


2

Benim için cevap yanlış yazılıştı ngModel. Ben şöyle yazmıştım: ngModuleolması gerektiği gibi ngModel.

Diğer tüm denemeler, hatayı benim için çözemedi.


Ya, Bu bana da oldu ... Model! = Modül Neden beynime girmiyor!
Rahul Sonwanshi

1

import { FormsModule } from '@angular/forms'; // <<<< buraya aktar

BrowserModule, FormsModule // <<<< ve burada

Yani sadece app.module.tsveya başka bir modül dosyasını arar ve içeri aktardığınızdan emin olun FormsModule...


1

Benim durumumda, eksik ithalat ekledim ReactiveFormsModule.


1

form modülünü app.module.ts dosyasına aktar.

import { FormsModule} from '@angular/forms';


@NgModule({
  declarations: [
    AppComponent,
    ContactsComponent
  ],
  imports: [
    BrowserModule,HttpModule,FormsModule     //Add here form  module
  ],
  providers: [],
  bootstrap: [AppComponent]
})

Html'de:

<input type="text" name="last_name" [(ngModel)]="last_name" [ngModelOptions]="{standalone: true}" class="form-control">

Html'de form kullandım ve app.madule.ts dosyasındaki '@ angular / formlar' dan içe aktarma {FormsModule} 'u içe aktardım ve bu FormsModule'u içe aktarmalara ekledim.
Brahmmeswara Rao Palepu

1

Benim durumumda yanlış yazdım, ben M odel ngmodel istead olarak bahsediyordum :) Umarım yardımcı olur!

Beklenen - [(ngModel)] Gerçek - [(ngmodel)]


1

İki yönlü ciltleme çalışmazsa, aşağıdakileri doğrulamanız gerekir.

HTML'de ngModel bu şekilde çağrılmalıdır. Girdi öğesinin diğer özniteliğine bağımlılık yoktur

<input [(ngModel)]="inputText">

Emin olun FormsModule modüller dosyasına aktarılır app.modules.ts

import { FormsModule } from '@angular/forms';

@NgModule({
    declarations: [
        AppComponent,
        HomeComponent // suppose, this is the component in which you are trying to use two ay binding
    ],
    imports: [
        BrowserModule,
        FormsModule,
        // other modules
],
    providers: [],
    bootstrap: [AppComponent]
})
export class AppModule { }

İki yönlü ciltleme için ngModel'i kullanmaya çalıştığınız bileşenin, bildirimlerine eklendiğinden emin olun. Bir önceki noktaya eklenen kod # 2

Bu, ngModel kullanarak iki yönlü ciltleme yapmak için yapmanız gereken her şeydir, bu açısal 9'a kadar doğrulanmıştır


0

Form girişleri için iki yönlü veri bağlama kullanmak istiyorsanız, Açısal modülünüzdeki FormsModule paketini içe aktarmanız gerekir. Daha fazla bilgi için buradaki Açısal 2 resmi eğiticisine ve formlar için resmi belgelere bakın

app.module.ts aşağıdaki satırları ekleyin:

import { FormsModule } from '@angular/forms';

[...]

@NgModule({
  imports: [
    [...]
    FormsModule
  ],
  [...]
})

0

önce FormsModule'u içe aktarın ve ardından bileşeninizde ngModel kullanın.

import { FormsModule } from '@angular/forms';

@NgModule({
 imports: [ 
            FormsModule  
          ];

HTML Kodu:

<input type='text' [(ngModel)] ="usertext" />

0

Form modülünü içe aktardıktan sonra bile sorun devam ederse, Girdinizin sayfadaki başka bir girdiye eşit değere sahip bir "ad" özelliği bulunmadığından emin olun .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.