2016-12-14 109 views
1

我刚开始Angular2和面临以下错误,当(ngSubmit)属性添加到我的形式Angular2(ngSubmit)不工作

Template parse errors: 
There is no directive with "exportAs" set to "ngForm" (" 


    <form [ERROR ->]#form="ngForm" (ngSubmit)="onSubmit()" novalidate> 

以下是一些从我的package.json依赖。

"dependencies": { 
    "@angular/common": "2.0.0", 
    "@angular/compiler": "2.0.0", 
    "@angular/core": "2.0.0", 
    "@angular/forms": "2.0.0", 
    "@angular/http": "2.0.0", 
    "@angular/platform-browser": "2.0.0", 
    "@angular/platform-browser-dynamic": "2.0.0", 
    "@angular/router": "3.0.0", 
    "@angular/upgrade": "2.0.0", 
    "angular2-in-memory-web-api": "0.0.20", 
    "core-js": "^2.4.1", 
    "ie-shim": "^0.1.0", 
    "jquery": "^3.1.0", 
    "reflect-metadata": "^0.1.3", 
    "rxjs": "5.0.0-beta.12", 
    "systemjs": "0.19.27", 
    "zone.js": "^0.6.23" 
    } 

我下面的HTML表单。

<form #form="ngForm" (ngSubmit)="onSubmit()" novalidate> 

    <div class="form-group"> 
     <label>Title</label> 
     <input [(ngModel)]="model.Title" #title="ngModel" name="title" id="title" type="text" class="form-control" value=""> 
    </div> 

    <div class="form-group"> 
     <label>Description</label> 
     <textarea [(ngModel)]="model.Description" #description="ngModel" class="summernote form-control" name="description" id="description"></textarea> 
    </div> 

</form> 

而继category.component文件

import { Component } from '@angular/core'; 
import { FormBuilder} from '@angular/forms'; 
import { Category } from '../../../models/cms/Category'; 

@Component({ 
    selector: 'category', 
    templateUrl: 'category.template.html' 
}) 
export class CategoryComponent{ 

    model = new Category("dummyTitle","dummyDescription"); 

    onSubmit() { 
     console.log(this.data); 
    } 
} 

可有人请指导如何处理这个问题。

+0

你在进口'FormsModule'您应用模块文件? – ranakrunal9

+0

@ ranakrunal9谢谢,是的,我已经导入了FormsModel。但没有收获 –

回答

7

你缺少一个导入文件import { NgForm } from '@angular/forms';

,并且您使用模板驱动的形式,所以你不需要FormBuilder。

尝试这种方式

注册-form.component.html

<form #signupForm="ngForm" (ngSubmit)="registerUser(signupForm)"> 
    <label for="email">Email</label> 
    <input type="text" name="email" id="email" ngModel> 

    <label for="password">Password</label> 
    <input type="password" name="password" id="password" ngModel> 

    <button type="submit">Sign Up</button> 
</form> 

注册-form.component.ts

import { Component } from '@angular/core'; 
import { NgForm } from '@angular/forms'; 

@Component({ 
    selector: 'signup-form', 
    templateUrl: 'app/signup-form.component.html', 
}) 
export class SignupForm { 
    registerUser(form: NgForm) { 
    console.log(form.value); 
    } 
}