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.