2016-10-25 6 views
11

Я все еще новичок в этом и учась через учебные пособия, но по какой-то причине я получаю сообщение No provider for formbuilder при попытке проверить уникальное имя пользователя. Я не уверен, почему я получаю это сообщение, но я не могу найти решение. Может ли кто-нибудь сказать мне, почему это происходит?Нет провайдера для FormBuilder

Signup-component.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; 
    } 
} 

ответ

27

Импорт ReactiveFormsModule и FormsModule

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

в модуле, где вы используете FormBuilder

+2

Спасибо! он работал, я импортировал ReactiveFormsModule в app.module.ts, поскольку это отсутствовало – sabin

+0

ReactiveFormsmodule и FormsModule не должны импортироваться вместе в одном модуле – DAG

+0

@dag Почему? 'Еще 6 идти ...' – tom10271