Wystąpił następujący błąd podczas uruchamiania mojej aplikacji Angular, nawet jeśli składnik nie jest wyświetlany.
Muszę skomentować, <input>
aby moja aplikacja działała.
zone.js:461 Unhandled Promise rejection: Template parse errors:
Can't bind to 'ngModel' since it isn't a known property of 'input'. ("
<div>
<label>Created:</label>
<input type="text" [ERROR ->][(ngModel)]="test" placeholder="foo" />
</div>
</div>"): InterventionDetails@4:28 ; Zone: <root> ; Task: Promise.then ; Value:
Patrzę na plunkera Hero, ale nie widzę żadnej różnicy w moim kodzie.
Oto plik komponentu:
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { Intervention } from '../../model/intervention';
@Component({
selector: 'intervention-details',
templateUrl: 'app/intervention/details/intervention.details.html',
styleUrls: ['app/intervention/details/intervention.details.css']
})
export class InterventionDetails
{
@Input() intervention: Intervention;
public test : string = "toto";
}
javascript
angular
typescript
input
Anthony Brenelière
źródło
źródło
Odpowiedzi:
Tak, to wszystko, w app.module.ts właśnie dodałem:
źródło
[{ngModel}]
zamiast właściwego:[(ngModel)]
component.spec.ts
pliku.Aby móc używać dwukierunkowego wiązania danych do formularzy, należy zaimportować
FormsModule
pakiet doAngular
modułu. Aby uzyskać więcej informacji, zobaczAngular 2
oficjalny samouczek tutaj i oficjalną dokumentację formularzyźródło
import { FORM_DIRECTIVES } from '@angular/forms';
i dodałemFORM_DIRECTIVES
do dyrektyw i tak, moje wiązanie znów działa (żeby było jasne, działało przed wydaniemFORM_DIRECTIVES
nie żyją na wszelki wypadekAby używać
[(ngModel)]
w Angular 2 , 4 i 5+ , musisz zaimportować FormsModule z Angular formularza ...Również znajduje się na tej ścieżce w formularzach w Angular repo w github :
Prawdopodobnie nie jest to zbyt przyjemne dla programistów AngularJs, ponieważ w dowolnym momencie możesz używać ng-model wszędzie, ale ponieważ Angular próbuje oddzielić moduły, aby użyć tego, co chcesz, aby było w tym czasie, ngModel jest teraz w FormsModule .
Również jeśli używasz ReactiveFormsModule, musisz go również zaimportować.
Po prostu poszukaj app.module.ts i upewnij się, że
FormsModule
zaimportowałeś ...Oto także bieżące komentarze początkowe dla Angular4
ngModel
w FormsModule :Jeśli chcesz użyć danych wejściowych, a nie w formie, możesz użyć ich
ngModelOptions
i sprawić, aby samodzielna była prawdziwa ...Aby uzyskać więcej informacji, spójrz na ng_model w sekcji Angular tutaj
źródło
Musisz zaimportować moduł FormsModule
Otwórz app.module.ts
i dodaj linię
i
źródło
Wrzucenie tego może komuś pomóc.
Po utworzeniu nowego NgModule, powiedzmy Zakładając
AuthModule
dedykowany do obsługi swoich potrzeb uwierzytelniania, upewnij się, że importFormsModule
w tym AuthModule zbyt .Jeśli będziesz używać
FormsModule
TYLKO wAuthModule
, nie będziesz musiał importowaćFormModule
IN domyślnieAppModule
Więc coś takiego w
AuthModule
:Następnie zapomnij o importowaniu,
AppModule
jeśli nie używaszFormsModule
nigdzie indziej.źródło
Przykład 1
Przykład 2
źródło
Zaimportuj FormsModule do tych modułów, w których chcesz użyć [(ngModel)]
źródło
Aby pozbyć się tego błędu, musisz wykonać dwa kroki
w zasadzie app.module.ts powinien wyglądać jak poniżej:
Mam nadzieję, że to pomoże
źródło
Musisz zaimportować FormsModule do modułu głównego , jeśli ten komponent znajduje się w katalogu głównym, tj. App.module.ts
Uprzejmie otwórz app.module.ts
Importuj FormsModule z @ angular / form
Dawny:
i
źródło
Używam Angulara 7
Muszę zaimportować ReactiveFormsModule, ponieważ używam klasy FormBuilder do tworzenia formularzy reaktywnych.
źródło
zaimportuj FormsModule do swojego modułu aplikacji.
pozwoli to na poprawne działanie aplikacji.
źródło
Jeśli trzeba użyć
[(ngModel)]
najpierw zrobić trzeba importowaćFormsModule
wapp.module.ts
, a następnie dodać do listy importu. Coś takiego:app.module.ts
import {FormsModule} from "@angular/forms";
imports: [ BrowserModule, FormsModule ],
app.component.ts
<input type="text" [(ngModel)]="name" >
<h1>your name is: {{name}} </h1>
źródło
ngModel jest częścią FormsModule. I powinien zostać zaimportowany z @ angular / form do pracy z ngModel.
Zmień plik app.module.ts w następujący sposób:
źródło
Jeśli po zastosowaniu zaakceptowanego rozwiązania ktoś nadal otrzymuje błędy, może to być spowodowane tym, że masz osobny plik modułu dla komponentu, w którym chcesz użyć właściwości ngModel w znaczniku wejściowym. W takim przypadku zastosuj również zaakceptowane rozwiązanie w pliku module.ts komponentu.
źródło
Używam Angulara 5.
W moim przypadku musiałem również zaimportować RactiveFormsModule.
app.module.ts (lub anymodule.module.ts)
źródło
ReactiveFormsModule
jest wymagane, gdy potrzebujeszFormGroup, FormControl ,Validators
itp. Do korzystaniangModel
nie potrzebujeszReactiveFormsModule
.Wiem, że to pytanie dotyczy Angulara 2, ale korzystam z Angulara 4 i żadna z tych odpowiedzi nie pomogła.
W Angular 4 składnia musi być
Mam nadzieję że to pomoże.
źródło
jeśli nadal pojawia się błąd po prawidłowym zaimportowaniu modułu FormsModule, to sprawdź terminal lub konsolę Windows, ponieważ projekt się nie kompiluje (z powodu innego błędu, który może być dowolny), a rozwiązanie nie zostało odzwierciedlone w przeglądarce!
W moim przypadku w mojej konsoli wystąpił następujący niepowiązany błąd: Właściwość „retrieveGithubUser” nie istnieje dla typu „ApiService”.
źródło
W module, z którego chcesz korzystać ngModel , musisz zaimportować FormsModule
źródło
ngModel pochodzi z FormsModule. Istnieją pewne przypadki, w których można otrzymać tego rodzaju błąd:
(W niektórych wersjach napotkałem ten problem) Zaimportowałeś poprawnie moduł FormsModule, ale problem dotyczy wejściowego znacznika HTML. Musisz dodać atrybut tagu nazwy dla danych wejściowych, a nazwa obiektu powiązana w [(ngModel)] musi być taka sama jak nazwa do atrybutu name
źródło
W
ngModule
musisz zaimportowaćFormsModule
, ponieważngModel
pochodzi zFormsModule
. Zmodyfikuj plik app.module.ts, tak jak poniższy kod, który udostępniłemźródło
importuj FormModule app.module
źródło
źródło
Czasami pojawia się ten błąd, gdy próbujesz użyć komponentu z modułu, który nie jest współużytkowany, w innym module.
Na przykład masz 2 moduły z module1.componentA.component.ts i module2.componentC.component.ts i próbujesz użyć selektora z module1.componentA.component.ts w szablonie wewnątrz modułu 2 (np.
<module1-componentA [someInputVariableInModule1]="variableFromHTTPRequestInModule2">
), Wyrzuci błąd polegający na tym, że niektóreInputVariableInModule1 nie jest dostępne w module1.componentA.component.ts - nawet jeśli masz@Input() someInputVariableInModule1
w module1.componentA.Jeśli tak się stanie, chcesz udostępnić moduł1.componentA, aby był dostępny w innych modułach. Jeśli więc udostępnisz moduł1.componentA w module współdzielonym, moduł1.componentA będzie można używać w innych modułach (poza modułem 1), a każdy moduł importujący moduł współdzielony będzie mógł uzyskać dostęp do selektora w swoich szablonach, wstrzykując
@Input()
deklarowaną zmienną.źródło
W moim scenariuszu musiałem zaimportować zarówno [CommonModule], jak i [FormsModule] do mojego modułu
źródło
Musisz zaimportować moduł FormsModule
Otwórz app.module.ts
i dodaj linię
i
źródło
Czasami, gdy jesteśmy już zaimportowane
BrowserModule
,FormsModule
i inne pokrewne Moduły chociaż Mam ten sam błąd wtedy zdałem sobie sprawę, że potrzebujemy importować je w kolejności , w moim przypadku brakowało mi go. Więc kolejność powinna być jakBrowserModule
,FormsModule
,ReactiveFormsModule
.Mam nadzieję, że to pomoże komuś .. :)
źródło
To jest dla osób, które używają zwykłego JavaScript zamiast skryptu. Oprócz odwoływania się do pliku skryptu formularzy na górze strony, jak poniżej
powinieneś także powiedzieć modułowi ładującemu, aby załadował
ng.forms.FormsModule
. Po wprowadzeniu zmian mojaimports
właściwośćNgModule
metody wyglądała jak poniżejimports: [ng.platformBrowser.BrowserModule, ng.forms.FormsModule],
Miłego kodowania!
źródło
Uaktualniłem z RC1 do RC5 i otrzymałem ten błąd.
Ukończyłem migrację (wprowadzając nowy
app.module.ts
plik, zmieniając wpackage.json
celu uwzględnienia nowych wersji i brakujących modułów, i wreszcie zmieniając odpowiednio mójmain.ts
system do rozruchu, na podstawie przykładu szybkiego uruchamiania Angular2 ).Zrobiłem
npm update
i wtedynpm outdated
aby potwierdzić, że zainstalowane wersje są prawidłowe, nadal nie mam szczęścia.Skończyłem całkowicie wycierać
node_modules
folder i instalować ponownie za pomocąnpm install
- Voila! Problem rozwiązany.źródło
Kiedy po raz pierwszy zrobiłem samouczek, main.ts wyglądał nieco inaczej niż obecnie. Wygląda bardzo podobnie, ale zwróć uwagę na różnice (pierwsza jest poprawna).
Poprawny:
Stary kod samouczka:
źródło
dodaj kod do app.module.ts To zadziałało dla mnie:
źródło