私はここから例を取った:Angular 4 Forms Directive (ngForm) そして、エラーを受け取る: ngModelとngFormの指示はありません。思わぬディレクティブは含まれていませんでした。角4.フォームモジュールのトラブル
ERROR Error: Uncaught (in promise): Error: Template parse errors: There is no directive with "exportAs" set to "NgForm" ("<form (ngSubmit)="onSubmit(f)" [ERROR ->]#f="NgForm" novalidate> <input name="first" [(ngModel)]="first" required #first="ngModel"> .....
core.es5.js:1084 ERROR Error: Uncaught (in promise): Error: Template parse errors: There is no directive with "exportAs" set to "ngModel" ("
<form (ngSubmit)="onSubmit(f)" novalidate>
<input name="first" ngModel required [ERROR ->]#first="ngModel">
<input name="last" ngModel>
<button>Submit</button>"): ng:///AuthModule/[email protected]:44 Error: Template parse errors: There is no directive with "exportAs" set to "ngModel" ("<form (ngSubmit)="onSubmit(f)" novalidate><input name="first" ngModel required [ERROR ->]#first="ngModel"><input name="last" ngModel><button>Submit</button>"): ng:///AuthModule/[email protected]:44
at syntaxError (http://localhost:4200/vendor.bundle.js:50027:34) [angular]....
ファイルはここにある:
モジュールファイル:login.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { LoginComponent } from './login.component';
@NgModule({
imports: [
CommonModule,
FormsModule,
BrowserModule
],
declarations: [LoginComponent],
bootstrap: [LoginComponent],
})
export class LoginModule {}
コンポーネントファイル:login.component.ts
import { Component } from '@angular/core';
import { NgForm } from '@angular/forms';
@Component({
selector: 'sc-auth-login',
template: `
<form (ngSubmit)="onSubmit(f)" #f="ngForm" novalidate>
<input name="first" ngModel required #first="ngModel">
<input name="last" ngModel>
<button>Submit</button>
</form>
<p>First name value: {{ first.value }}</p>
<p>First name valid: {{ first.valid }}</p>
<p>Form value: {{ f.value | json }}</p>
<p>Form valid: {{ f.valid }}</p>
`,
})
export class LoginComponent {
onSubmit(f: NgForm) {
console.log(f.value); // { first: '', last: '' }
console.log(f.valid); // false
}
}
どれでも何が間違っているのかそれ?
解決策は、FormsModuleを最初の親モジュールにグローバルには含めません。 私のプロジェクト構造:app => auth => login。 フォームはauth.moduleに含まれていないapp.moduleに含まれていました。 私はそれをauthに追加した後、動作し始めました。 –