Я продолжаю получать эту ошибку при использовании фреймворка Angular2-формы TypeScript:
Нет
directive
с "exportAs" установленным на "ngForm"
Вот мой код
зависимости проекта:
"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",
}
И это шаблон входа в систему:
<form #loginForm="ngForm" (ng-submit)="authenticate(loginForm.value)">
</form>
... и компонент входа в систему:
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) {
...
}
}
У меня есть эта ошибка:
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
Насим МОУАЛЕК
источник
источник
div
и вызвал эту ошибку.imports
массиве, а не вproviders
массивеВы должны импортировать
FormsModule
не только в корневой AppModule, но и в каждый подмодуль, который использует любые директивы угловых форм.источник
Я знаю, что это старый пост, но я хотел бы поделиться своим решением. Я добавил " ReactiveFormsModule " в массиве import [], чтобы устранить эту ошибку
Ошибка: нет директивы с "exportAs", установленным в "ngForm" ("
Fix:
module.ts
import {FormsModule, ReactiveFormsModule } из '@ angular / forms'
источник
источник
(На всякий случай, если кто-то еще слеп, как я)
form
FTW ! Обязательно используйте<form>
тегне будет работать:
работает как шарм:
источник
Если имя назначено так:
... exportAs должен быть определен в декораторе компонента:
источник
проверьте, импортируете ли вы FormsModule. В новой версии angular 2 нет версии ngControl. Вы должны изменить свой шаблон в качестве примера
источник
Две вещи, которые вы должны заботиться ..
Если вы используете субмодуль, вы должны импортировать FormModule в этот субмодуль.
Вы должны экспортировать FormModule в модуль
вместе они выглядят как импорт: [CommonModule, HttpModule, FormsModule], экспорт: [FormsModule],
в верхней части вы должны импортировать FormsModule
import {FormsModule} из '@ angular / forms';
если вы используете только app.module.ts, то
не нужно экспортировать .. требуется только импорт
источник
import { FormsModule } from '@angular/forms';
добавьте его в массив импорта NgModule:@NgModule({ imports: [ FormsModule ],
Я столкнулся с этой проблемой, но ни один из ответов здесь не работал для меня. Я погуглил и обнаружил, что
FormsModule not shared with Feature Modules
Так что если ваша форма находится в избранном модуле, то вам нужно импортировать и добавить
FromsModule
туда.Пожалуйста, укажите: https://github.com/angular/angular/issues/11365
источник
В дополнение к импорту модуля формы в файл ts компонента входа необходимо также импортировать NgForm.
Это решило мою проблему
источник
в app.module.ts навсегда решить такие ошибки, как
"cannot bind [formGroup] or no directive with export as"
.источник
это
Также вызывает ошибку и может быть исправлено включением директивы ngForm .
источник
Я приходил к одному и тому же вопросу снова и снова, также по той же причине. Итак, позвольте мне ответить на это, сказав, что я делаю неправильно. Может быть полезно для кого-то.
Я создавал компонент с помощью
angular-cli
командыЧто было сделано, был создан компонент, как я и хотел.
Кроме того, при создании компонента он добавил компонент в массив объявлений модуля приложения .
Если это так, пожалуйста, удалите его. И вуаля! Это может сработать.
источник
Вы должны импортировать FormsModule и затем поместить его в раздел импорта.
источник
Просто, если у вас нет модуля импорта, тогда импортируйте и объявляйте import {FormsModule} из '@ angular / forms';
и если вы это сделали, то вам просто нужно удалить formControlName = 'what' из полей ввода.
источник
Вы должны завершить приложение с помощью ctrl + c и повторно запустить его с помощью ng serve, если вы не включили FormsModule в свой массив импорта файлов app.module, а затем добавили его позже, angular не знает об этом, он не пересматривает модули , вы должны перезапустить приложение, чтобы angular мог видеть, что новый модуль включен, после чего в него будут включены все функции подхода с использованием шаблонов.
источник
В моем случае мне пришлось удалить
ngNoForm
атрибут из моего<form>
тега.Ссылка: https://www.techiediaries.com/angular-ngform-ngnoform-template-reference-variable/
источник
Я только что переместил модули маршрутизации, то есть, скажем, ARoutingModule выше FormsModule и ReactiveFormsModule и после CommonModule в массиве импортных модулей.
источник
Просто импортируйте правильный модуль,
"FormsModule"
источник
Эта ошибка также возникает, если вы пытаетесь написать пример модульного теста в угловых, используя жасмин.
Основная концепция этой ошибки заключается в
import FormsModule
. Таким образом, в файле для модульных тестов мы добавляем секцию импорта и помещаем FormsModule в этот файл висточник
У меня была та же проблема, и я решил ее, обновив все зависимости (package.json) с помощью следующей команды
npm update -D && npm update -S
Как указал @ Günter Zöchbauer, сначала обязательно включите FormsModule.
источник