形式 – 角度2:’ngFormModel’,因为它不是已知的本机属性

前端之家收集整理的这篇文章主要介绍了形式 – 角度2:’ngFormModel’,因为它不是已知的本机属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的错误是,
  1. EXCEPTION: Error: Uncaught (in promise): Template parse errors:

无法绑定到’ngFormModel’,因为它不是已知的本机属性(“

我的简历

] [ngFormModel] =“form”(ngSubmit)=“onSubmit(form.value)”>

“):a @ 3:7
没有将“exportAs”设置为“ngForm”(“stname”)的指令
]#firstname =“ngForm”>

“):a @ 9:85
没有指定“exportAs”设置为“ngForm”(“/ label>
]#lastname =“ngForm”>

我的模板,

  1. <h3 class = "head">MY PROFILE</h3>
  2.  
  3. <form [ngFormModel]="form" (ngSubmit)="onSubmit(form.value)">
  4.  
  5. <div class="row">
  6.  
  7. <div class="form-group">
  8. <label class="formHeading">firstname</label>
  9. <input type="text" id="facebook" class="form-control" ngControl="firstname" #firstname="ngForm" >
  10. </div>
  11.  
  12. <div *ngIf ="firstname.touched">
  13. <div *ngIf ="!firstname.valid" class = "alert alert-danger">
  14. <strong>First name is required</strong>
  15. </div>
  16. </div>
  17.  
  18.  
  19. <div class="form-group">
  20. <label class="formHeading">lastname</label>
  21. <input type="text" id="facebook" class="form-control col-xs-3" ngControl="lastname" #lastname="ngForm" >
  22. </div>
  23.  
  24. <div *ngIf ="lastname.touched" >
  25. <div *ngIf = "!lastname.valid" class = "alert alert-danger">
  26. <strong>Last name is required</strong>
  27. </div>
  28. </div>
  29.  
  30.  
  31.  
  32.  
  33. <div class="form-group">
  34. <label class="formHeading">Profilename</label>
  35. <input type="text" id="facebook" class="form-control col-xs-3" ngControl="profilename" #profilename="ngForm" >
  36. </div>
  37.  
  38.  
  39.  
  40. <div class="form-group">
  41. <label class="formHeading">Phone</label>
  42. <input type="text" id="facebook" class="form-control col-xs-3" ngControl="phone" #phone="ngForm" >
  43. </div>
  44.  
  45. <div *ngIf ="phone.touched" >
  46. <div *ngIf = "!phone.valid" class = "alert alert-danger">
  47. <strong>Phone number is required</strong>
  48. </div>
  49. </div>
  50.  
  51. <label class="formHeading">Image</label>
  52. <input type="file" name="fileupload" ngControl="phone">
  53.  
  54.  
  55.  
  56. <div class="form-row btn">
  57.  
  58. <button type="submit" class="btn btn-primary " [disabled]="!form.valid">Save</button>
  59. </div>
  60.  
  61. </div>
  62. </form>

我的组件,
从“@ angular / core”导入{Component};
从’@ angular / http’导入{Http,Response,Headers};
从“rxjs / Observable”导入{Observable};
从’rxjs / Subject’导入{Subject};
从’../headers/headers’导入{contentHeaders};
从“@ angular / forms”导入{FORM_DIRECTIVES};
从’@ angular / router’导入{Router,ROUTER_DIRECTIVES};
从“@ angular / common”导入{Control,FormBuilder,ControlGroup,Validators};

  1. @Component({
  2.  
  3. templateUrl: './components/profile/profile.html',directives: [ROUTER_DIRECTIVES,FORM_DIRECTIVES],})
  4.  
  5. export class Profile {
  6.  
  7.  
  8. http: Http;
  9.  
  10. form: ControlGroup;
  11.  
  12. constructor(fbld: FormBuilder,http: Http,public router: Router) {
  13. this.http = http;
  14. this.form = fbld .group({
  15. firstname: ['',Validators.required],lastname: ['',profilename :['',image : [''],phone : [''],});
  16.  
  17.  
  18. }
  19.  
  20.  
  21.  
  22. onSubmit(form:any){
  23.  
  24. console.log(form);
  25. let body = JSON.stringify(form);
  26. var headers = new Headers();
  27. this.http.post('http://localhost/angular/index.PHP/profile/addprofile',body,{headers:headers})
  28. .subscribe(
  29. response => {
  30. if(response.json().error_code ==0){
  31. alert('added successfully');
  32. this.router.navigate(['/demo/professional']);
  33. }
  34. else{
  35. alert('fail');
  36.  
  37. }
  38.  
  39. })
  40. }
  41.  
  42.  
  43. }
问题是您仍然从常规导入,特别是使用旧表单的说明.
正确导入新表单的组件:
  1. import {FORM_DIRECTIVES,REACTIVE_FORM_DIRECTIVES} from '@angular/forms';
  2. import {FormBuilder,FormGroup,Validators} from '@angular/forms';

并纠正组件:

  1. @Component({
  2. ...
  3. directives: [FORM_DIRECTIVES,REACTIVE_FORM_DIRECTIVES]
  4. })
  5. export class AppComponent {
  6.  
  7. form: FormGroup;
  8.  
  9. constructor(fbld: FormBuilder) {
  10.  
  11. this.form = fbld.group({
  12. ...
  13.  
  14. });
  15.  
  16.  
  17. }
  18.  
  19. ...
  20.  
  21. }

然后更正视图:ngFormModel已被formGroup替换,并为您的字段使用formControl:

  1. <form [formGroup]="form" (ngSubmit)="onSubmit(form.value)">
  2.  
  3. <div class="row">
  4.  
  5. <div class="form-group">
  6. <label class="formHeading">firstname</label>
  7. <input type="text" id="facebook" class="form-control" [formControl]="form.controls['firstname']" >
  8. </div>
  9.  
  10. <div *ngIf ="form.controls['firstname'].touched">
  11. <div *ngIf ="!form.controls['firstname'].valid" class = "alert alert-danger">
  12. <strong>First name is required</strong>
  13. </div>
  14. </div>
  15.  
  16. ...
  17.  
  18. <div class="form-row btn">
  19.  
  20. <button type="submit" class="btn btn-primary" [disabled]="!form.valid">Save</button>
  21.  
  22. </div>
  23.  
  24. </div>
  25. </form>

编辑.从Angular 2.0.0-rc.5中,需要从组件中删除指令并在AppModule中导入表单模块:

  1. import { FormsModule,ReactiveFormsModule } from '@angular/forms';
  2.  
  3. @NgModule({
  4. imports: [
  5. ...
  6. FormsModule,ReactiveFormsModule
  7. ],...
  8. bootstrap: [AppComponent]
  9. })
  10.  
  11. export class AppModule { }

如果您使用共享模块,请不要忘记导出它们:

  1. @NgModule({
  2. imports: [
  3. ...
  4. FormsModule,exports: [
  5. ...
  6. FormsModule,ReactiveFormsModule
  7. ]
  8. })
  9.  
  10. export class SharedModule { }

猜你在找的Angularjs相关文章