【问题标题】:No Provider for FormBuilder [duplicate]FormBuilder没有提供者[重复]
【发布时间】:2017-03-08 00:57:19
【问题描述】:

我还是新手,通过教程学习,但由于某种原因,我在尝试测试唯一用户名时收到消息 No provider for formbuilder。 我不确定为什么会收到此消息,但我无法找到解决方案。谁能告诉我为什么会这样?

注册组件.ts

import {Component} from '@angular/core';
import {ControlGroup, Control, Validators, FormBuilder} from '@angular/common'
import {UsernameValidators} from './usernameValidators'

@Component({
selector: 'signup',
templateUrl: 'signup-component.html'

})
export class SignupComponent{
  form: ControlGroup;

  constructor(fb: FormBuilder){
    this.form = fb.group({
      username:['', Validators.compose([
          Validators.required, UsernameValidators.cannotContainSpace
      ])],
      password: ['', Validators.required]
    })
  }
}

usernameValidators.ts

import {Control} from '@angular/common'


export class UsernameValidators{

  static shouldBeUnique(control: Control){
    return new Promise((resolve, reject) => {
      setTimeout(function(){
        if(control.value == "andy")
          resolve({shouldBeUnique: true});
        else
          resolve(null);
      }, 1000);

    });

  }


  static cannotContainSpace(control: Control){
    if (control.value.indexOf(' ') >= 0)
      return {cannotContainSpace: true};

    return null;
  }
}

【问题讨论】:

    标签: angular


    【解决方案1】:

    导入ReactiveFormsModuleFormsModule

    @NgModule({
      imports: [
          BrowserModule /* or CommonModule */, 
          FormsModule, ReactiveFormsModule
      ],
      ...
    })
    

    在您使用FormBuilder的模块中

    【讨论】:

    • 谢谢!它起作用了,我在 app.module.ts 中导入了 ReactiveFormsModule,因为它丢失了
    • ReactiveFormsmodule 和 FormsModule 不应在同一个模块中一起导入
    • @dag 为什么? 6 more to go...
    • 为什么 NgModule 中的 provider 不需要添加 FormBuilder? Angular 会自动管理这种依赖关系吗?
    • 我必须将其导入 app.module.ts 才能使其正常工作...令人讨厌,因为它会使初始页面加载膨胀-尽管我说我没有注意到页面加载速度减慢了很多
    猜你喜欢
    • 2022-07-24
    • 1970-01-01
    • 2022-01-11
    • 2019-12-25
    • 2019-05-19
    • 1970-01-01
    • 2017-08-13
    • 2020-10-18
    相关资源
    最近更新 更多