Podczas korzystania z frameworku Angular2-form TypeScript nadal pojawia się ten błąd:
Nie ma opcji
directive
„ExportAs” ustawionej na „ngForm”
Oto mój kod
zależności projektu:
"dependencies": {
"@angular/common": "2.0.0-rc.6",
"@angular/compiler": "2.0.0-rc.6",
"@angular/core": "2.0.0-rc.6",
"@angular/forms": "2.0.0-rc.6",
"@angular/http": "2.0.0-rc.6",
"@angular/platform-browser": "2.0.0-rc.6",
"@angular/platform-browser-dynamic": "2.0.0-rc.6",
"@angular/router": "3.0.0-rc.2",
"ng2-bootstrap": "^1.1.1",
"reflect-metadata": "^0.1.8",
"core-js": "^2.4.0",
"es6-module-loader": "^0.17.8",
"rxjs": "5.0.0-beta.11",
"systemjs": "0.19.27",
"zone.js": "0.6.17",
"jquery": "3.0.0",
}
A to jest szablon logowania:
<form #loginForm="ngForm" (ng-submit)="authenticate(loginForm.value)">
</form>
... i komponent logowania:
import { Component } from '@angular/core';
import {Http, Headers} from '@angular/http';
@Component({
moduleId: module.id,
selector: 'login-cmp',
templateUrl: 'login.component.html'
})
export class LoginComponent {
constructor($http: Http) {
this.$http = $http;
}
authenticate(data) {
...
}
}
Mam ten błąd:
zone.js?1474211973422:484 Unhandled Promise rejection: Template parse errors:
There is no directive with "exportAs" set to "ngForm" ("
<form [ERROR ->]#loginForm="ngForm"
(ngsubmit)="authenticate(loginForm.value)">
angular
typescript
forms
angular2-forms
Nassim MOUALEK
źródło
źródło
div
i spowodował ten błąd.imports
tablicy, a nie doproviders
tablicyMusisz zaimportować
FormsModule
nie tylko do głównego modułu AppModule, ale także do każdego podmodułu, który korzysta z dyrektyw dotyczących form kątowych.źródło
Wiem, że to Stary post, ale chciałbym podzielić się moim rozwiązaniem. Dodałem „ ReactiveFormsModule ” w tablicy importu [], aby rozwiązać ten błąd
Błąd: Nie ma dyrektywy z ustawieniem „exportAs” na „ngForm” („
Naprawić:
module.ts
import {FormsModule, ReactiveFormsModule } z „@ angular / form”
źródło
źródło
(Na wypadek, gdyby ktoś inny był ślepy jak ja)
form
FTW ! Pamiętaj, aby użyć<form>
tagunie będzie działać:
działa jak urok:
źródło
W przypadku przypisania nazwy w ten sposób:
... eksportAs musi być zdefiniowany w dekoratorze komponentów:
źródło
sprawdź, czy importujesz FormsModule. Nie ma ngControl w nowej wersji wersji Angular 2 Release. musisz zmienić szablon na przykład
źródło
Dwie rzeczy, na które musisz dbać ...
Jeśli używasz podmodułu, musisz zaimportować moduł FormModule do tego podmodułu.
musisz wyeksportować moduł FormModule do modułu
więc razem wygląda to na import: [CommonModule, HttpModule, FormsModule], eksport: [FormsModule],
na górze musisz zaimportować moduł FormsModule
import {FormsModule} z '@ angular / form';
jeśli używasz tylko app.module.ts, to
nie trzeba eksportować. Wymagany tylko import
źródło
import { FormsModule } from '@angular/forms';
dodaj go do tablicy importu NgModule:@NgModule({ imports: [ FormsModule ],
Napotkałem ten problem, ale żadna z odpowiedzi tutaj nie zadziałała. Poszukałem go i znalazłem
FormsModule not shared with Feature Modules
Jeśli więc Twój formularz znajduje się w polecanym module, musisz go zaimportować i
FromsModule
tam dodać .Proszę sprawdzić: https://github.com/angular/angular/issues/11365
źródło
Oprócz zaimportowania modułu formularza do pliku ts komponentu logowania musisz również zaimportować NgForm.
To rozwiązało mój problem
źródło
w app.module.ts, aby trwale rozwiązać błędy takie jak
"cannot bind [formGroup] or no directive with export as"
.źródło
To
Powoduje również błąd i można go naprawić, włączając dyrektywę ngForm .
źródło
Ciągle powtarzam to samo pytanie, również z tego samego powodu. Więc pozwól mi odpowiedzieć na to, mówiąc, co złego robiłem. Może być komuś pomocny.
Tworzyłem komponent za
angular-cli
pomocą poleceniaTo, co zrobiło, stworzyło komponent tak, jak chciałem.
Ponadto, podczas tworzenia komponentu, dodał komponent do tablicy deklaracji modułu aplikacji .
W takim przypadku usuń go. I Voila! To może zadziałać.
źródło
Musisz zaimportować moduł FormsModule, a następnie umieścić go w sekcji importowania.
źródło
Proste, jeśli nie importujesz modułu, a następnie zaimportuj i zadeklaruj import {FormsModule} z '@ angular / form';
a jeśli tak, wystarczy usunąć formControlName ='okolwiek ' z pól wejściowych.
źródło
Powinieneś zakończyć aplikację za pomocą Ctrl + C i uruchomić ją ponownie z ng serwerem, jeśli nie włączyłeś FormsModule do tablicy importu plików app.module, a następnie dodałeś ją później, Angular nie wie o tym, nie skanuje ponownie modułów , należy ponownie uruchomić aplikację, aby kątowy mógł zobaczyć, że nowy moduł jest uwzględniony, po czym obejmie wszystkie funkcje podejścia do szablonu
źródło
W moim przypadku musiałem usunąć
ngNoForm
atrybut z mojego<form>
tagu.Odniesienie: https://www.techiediaries.com/angular-ngform-ngnoform-template-reference-variable/
źródło
Właśnie przeniosłem moduły routingu, tj. Powiedzmy ARoutingModule powyżej FormsModule i ReactiveFormsModule oraz po CommonModule w tablicy importów modułów.
źródło
Wystarczy zaimportować odpowiedni moduł,
„FormsModule”
źródło
Ten błąd występuje również, jeśli próbujesz napisać jednostkowy przypadek testowy za pomocą jaśminu.
Podstawową koncepcją tego błędu jest
import FormsModule
. Dlatego w pliku testów jednostkowych dodajemy sekcję importu i umieszczamy FormsModule w tym pliku podźródło
Miałem ten sam problem i rozwiązałem go, aktualizując wszystkie zależności (pakiet.json) za pomocą następującego polecenia
npm update -D && npm update -S
Jak zauważył @ Günter Zöchbauer, pamiętaj, aby najpierw dołączyć moduł FormsModule.
źródło