Я попытался импортировать модули FormsModule и NgForm, а также добавить FormsModule в массив импорта.
Ниже мой код:
//our root app component
import { Component, NgModule, VERSION } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {FormsModule, NgForm} from '@angular/forms';
@Component({
selector: 'my-app',
template: '
<form #searchForm="ngForm">
<input type="text" required [(ngModel)]="model.search" ngControl="search" #inputSearch="ngForm">
<p class="error" [hidden]="inputSearch.valid"> This input is required</p>
</form>
',
styles: ['
.error {
color: red;
font-size: 11px;
}
']
})
export class App {
public model = {
search: ""
}
constructor() {
}
}
@NgModule({
imports: [BrowserModule, FormsModule],
declarations: [App],
bootstrap: [App],
})
export class AppModule {}
Ниже приведена распечатка ошибок:
runtime.9ff156e16d788666a54a.js: 16 Ошибка: ошибки синтаксического анализа шаблона: нет директивы с параметром "exportAs", установленным в "ngForm" ("] # searchForm =" ngForm ">] # inputSearch =" ngForm "> Этот вход требуется
"): ng:///AppModule/App.html@2: 76 Невозможно связать с 'ngModel', поскольку это не является известным свойством 'input'. ("] [(ngModel)] = "model. search "ngControl =" search "# inputSearch =" ngForm "> https://run.plnkr.co/rhpwnL6UIQwCFOKZ/src/main.js Загрузка https://run.plnkr.co/rhpwnL6UIQwCFOKZ/src/main.js f @runtime.9ff156e16d788666a54a.js: 16
Ошибка была вызвана этой строкой:
#inputSearch="ngForm"
Это правильная строка:
#inputSearch="ngModel"
Вот рабочий пример. Когда вы используете ngModel в теге формы, вам также необходимо указать значение атрибута "name".
<form #searchForm="ngForm">
<input type="text" required name="search" [(ngModel)]="model.search" #inputSearch="ngModel">
<p class="error" [hidden]="inputSearch.valid"> This input is required</p>
</form>