SYTUACJA:
Proszę pomóż! Staram się stworzyć w mojej aplikacji Angular2 coś, co powinno być bardzo prostą formą, ale nie ważne, co nigdy nie działa.
WERSJA KĄTOWA:
Kątowy 2.0.0 Rc5
BŁĄD:
Can't bind to 'formGroup' since it isn't a known property of 'form'
KOD:
Widok:
<form [formGroup]="newTaskForm" (submit)="createNewTask()">
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" required>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
Kontroler:
import { Component } from '@angular/core';
import { FormGroup, FormControl, Validators, FormBuilder } from '@angular/forms';
import {FormsModule,ReactiveFormsModule} from '@angular/forms';
import { Task } from './task';
@Component({
selector: 'task-add',
templateUrl: 'app/task-add.component.html'
})
export class TaskAddComponent {
newTaskForm: FormGroup;
constructor(fb: FormBuilder)
{
this.newTaskForm = fb.group({
name: ["", Validators.required]
});
}
createNewTask()
{
console.log(this.newTaskForm.value)
}
}
NgModule:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { routing } from './app.routing';
import { AppComponent } from './app.component';
import { TaskService } from './task.service'
@NgModule({
imports: [
BrowserModule,
routing,
FormsModule
],
declarations: [ AppComponent ],
providers: [
TaskService
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
PYTANIE:
Dlaczego dostaję ten błąd?
Czy coś brakuje?
źródło
FormsModule
iReactiveFormsModule
. Zmienię swoją odpowiedź.ReactiveFormsModule
do listy dostawców i zadziałało. Nie jestem jednak pewien, czy tak właśnie należy to robić.Angular 4 w połączeniu z modułami funkcji (jeśli na przykład używasz modułu współdzielonego) wymaga również wyeksportowania go
ReactiveFormsModule
do pracy.źródło
Ok, po kilku kopaniach znalazłem rozwiązanie dla „Nie można powiązać z„ formGroup ”, ponieważ nie jest to znana właściwość„ form ”.
W moim przypadku korzystałem z wielu plików modułów, dodałem ReactiveFormsModule w app.module.ts
Ale to nie działało, gdy używam dyrektywy [formGroup] z komponentu dodanego w innym module, np. Używając [formGroup] w autor.component.ts, który jest subskrybowany w pliku autor.module.ts:
Pomyślałem, że jeśli dodam ReactiveFormsModule w app.module.ts, domyślnie ReactiveFormsModule zostanie odziedziczony przez wszystkie jego moduły potomne, takie jak autor.module w tym przypadku ... (źle!). Musiałem zaimportować ReactiveFormsModule do autor.module.ts, aby wszystkie dyrektywy działały:
Tak więc, jeśli używasz submodułów, pamiętaj, aby zaimportować ReactiveFormsModule w każdym pliku submodułu. Mam nadzieję, że to pomoże każdemu.
źródło
Wystąpił ten błąd podczas testowania jednostkowego komponentu (tylko podczas testowania, w aplikacji działał normalnie). Rozwiązaniem jest zaimportowanie
ReactiveFormsModule
do.spec.ts
pliku:źródło
Sugerowana odpowiedź nie działała dla mnie w Angular 4. Zamiast tego musiałem użyć innego sposobu wiązania atrybutów z
attr
przedrostkiem:źródło
attr.
?ReactiveFormsModule
bezpośrednio na stronę.module.ts
. Nie.page.ts
… kiedy to zrobiłem, mój szablon mógł poprawnie zidentyfikowaćformGroup
atrybut bezattr.
prefiksu.Jeśli musisz zaimportować dwa moduły, dodaj tak poniżej
źródło
Pamiętaj, że jeśli zdefiniowałeś „moduły funkcji”, musisz zaimportować do modułu funkcji, nawet jeśli już je zaimportowałeś
AppModule
. Z dokumentacji kątowej:https://angular.io/docs/ts/latest/guide/ngmodule.html
źródło
Błąd mówi, że FormGroup nie jest rozpoznawany w tym module. Musisz więc zaimportować te (poniżej) moduły do każdego modułu korzystającego z FormGroup
Następnie dodaj FormsModule i ReactiveFormsModule do tablicy importu modułu .
Być może myślisz, że już go dodałem w AppModule i powinien on po nim dziedziczyć? Ale to nie jest. ponieważ te moduły eksportują wymagane dyrektywy, które są dostępne tylko podczas importowania modułów. Przeczytaj więcej tutaj ... https://angular.io/guide/sharing-ngmodules .
Innymi czynnikami tych błędów mogą być błędy ortograficzne, jak poniżej ...
[FormGroup] = "form" Capital F zamiast małego f
[formGroup] = "form" Dodatkowe s po formularzu
źródło
Miałem ten sam problem z Angularem 7. Wystarczy zaimportować następujące w pliku app.module.ts.
Następnie dodaj FormsModule i ReactiveFormsModule do tablicy importu.
źródło
Ten problem występuje z powodu braku importu FormsModule, ReactiveFormsModule. Ja również przyszedł z tym samym problemem. Moja sprawa była inna. ponieważ pracowałem z modułami, więc nie zauważyłem importu w modułach nadrzędnych, chociaż zaimportowałem go do modułów podrzędnych, nie działało.
Następnie zaimportowałem go do moich modułów nadrzędnych jak poniżej i zadziałało!
źródło
Dla osób przechadzających się tymi wątkami o tym błędzie. W moim przypadku miałem wspólny moduł, w którym eksportowałem tylko FormsModule i ReactiveFormsModule i zapomniałem go zaimportować. Spowodowało to dziwny błąd polegający na tym, że grupy form nie działały w podkomponentach. Mam nadzieję, że to pomaga ludziom drapać się po głowach.
źródło
Napotkałem ten błąd podczas próby przeprowadzenia testów e2e i doprowadzało mnie to do szału, że nie ma na to odpowiedzi.
JEŚLI ROBISZ TESTOWANIE, znajdź plik * .specs.ts i dodaj:
źródło
MAŁA UWAGA: Uważaj na ładowarki i minimalizuj (środowisko szyn):
Po zobaczeniu tego błędu i wypróbowaniu każdego rozwiązania, zdałem sobie sprawę, że coś jest nie tak z moim programem ładującym HTML.
Skonfigurowałem środowisko Railsów, aby pomyślnie importowało ścieżki HTML dla moich komponentów za pomocą tego modułu ładującego (
config/loaders/html.js.
):Po kilku godzinach starań i niezliczone importu ReactiveFormsModule zobaczyłem, że mój
formGroup
były małe litery:formgroup
.Doprowadziło mnie to do modułu ładującego i faktu, że zmniejszył mój HTML do minimalizacji.
Po zmianie opcji wszystko działało tak, jak powinno, i mogłem wrócić do płaczu.
źródło
przy użyciu i importowaniu REACTIVE_FORM_DIRECTIVES :
źródło
Jeśli masz ten problem podczas tworzenia komponentu, powinieneś dodać te dwa moduły do najbliższego modułu:
A jeśli opracowujesz test dla swoich komponentów, powinieneś dodać ten moduł do pliku testowego w następujący sposób:
źródło
Zaimportuj ReactiveFormsModule do odpowiedniego modułu
źródło
Proste rozwiązanie:
krok 1: zaimportuj ReactiveFormModule
krok 2: dodaj „ReactiveFormsModule” do sekcji importowania
Krok 3: uruchom ponownie aplikację i gotowe
Przykład:
źródło
Zaimportuj i zarejestruj ReactiveFormsModule w pliku app.module.ts.
Upewnij się, że pisownia jest poprawna zarówno w pliku .ts, jak i .html. xxx.ts
plik xxx.html
Przez pomyłkę napisałem [FormGroup] zamiast [formGroup]. Sprawdź poprawność pisowni w .html. Nie generuje błędu czasu kompilacji Jeśli coś jest nie tak w pliku .html.
źródło
Uwaga : jeśli pracujesz w komponencie modułu podrzędnego, wystarczy zaimportować ReactiveFormsModule do modułu podrzędnego zamiast nadrzędnego modułu głównego aplikacji
źródło
Nie bądź głupi jak ja. Wystąpił taki sam błąd jak powyżej, ŻADNA z opcji w tym wątku nie działała. Potem zdałem sobie sprawę, że napisałem wielką literą „F” w FormGroup. Doh!
Zamiast:
[FormGroup]="form"
Zrobić:
[formGroup]="form"
źródło
jeśli jest to tylko błąd maszynopisu, ale wszystko w twoim formularzu działa, być może będziesz musiał ponownie uruchomić IDE
źródło
Miałem ten sam problem, upewnij się, że jeśli używasz submodułów (na przykład, nie tylko masz app.component.module.ts, ale masz osobny składnik, taki jak login.module.ts, że do tego logowania dołączasz import ReactiveFormsModule .module.ts import, aby działał. Nie muszę nawet importować ReactiveFormsModule w moim app.component.module, ponieważ do wszystkiego używam submodułów.
login.module.ts:
źródło
Może komuś pomóc:
gdy masz formGroup w modalu (entrycomponent), musisz zaimportować ReactiveFormsModule również w module, w którym jest on tworzony.
źródło
Can't bind to 'formGroup' since it isn't a known property of 'form'
oznacza, że próbujesz powiązać właściwość za pomocą angular (
[prop]
), ale kątowy nie może znaleźć niczego, co wie dla tego elementu (w tym przypadkuform
).może się to zdarzyć, jeśli nie użyjesz odpowiedniego modułu (brakuje gdzieś sposobu importu), a czasami po prostu powoduje literówkę:
[formsGroup]
, zs
późniejform
źródło
Moje rozwiązanie było subtelne i nie widziałem go jeszcze na liście.
Korzystałem z form reaktywnych w komponencie okna dialogowego materiałów kątowych, który nie został zadeklarowany
app.module.ts
. Główny komponent został zadeklarowany wapp.module.ts
i otworzyłby komponent okna dialogowego, ale komponent okna dialogowego nie został jawnie zadeklarowany wapp.module.ts
.Nie miałem żadnych problemów z normalnym użyciem komponentu okna dialogowego, z wyjątkiem tego, że formularz generował ten błąd przy każdym otwarciu okna dialogowego.
Can't bind to 'formGroup' since it isn't a known property of 'form'.
źródło
Po dodaniu modułu do
AppModule
wszystkiego wszystko zaczęło działać poprawnie.źródło