2017-04-05 7 views
2

Ich versuche, Validierungen zu meinem Formular using this article hinzuzufügen. Wenn ich den Konstruktor mit der FormBuilder verwenden, gibt es Fehler, die besagt, dass EXCEPTION: Uncaught (in promise): Error: DI Error.FormBuilder gibt Konsolenfehler

test1.component.ts

import { Component, Inject, OnInit } from '@angular/core'; 
import { FormGroup, FormBuilder } from '@angular/forms'; 
import { FormComponent } from '../form/form.component'; 

@Component({ 
    selector: 'app-test1', 
    templateUrl: './test1.component.html', 
    styleUrls: ['./test1.component.css'] 
}) 
export class Test1Component extends FormComponent { 
    complexForm : FormGroup; 

    constructor(@Inject(FormBuilder) fb: FormBuilder){ 
    super(); 
    this.complexForm = fb.group({ 
     'firstName' : "", 
     'lastName': "", 
     'gender' : "Female", 
     'hiking' : false, 
     'running' : false, 
     'swimming' : false 
    }); 
    } 

    saveForm(){ 
    console.log("Child Form save"); 
    return true; 
    } 
} 

Unten finden Sie die Konsole Fehler enter image description here

Wie kann ich dieses Problem beheben?

Ich habe versucht, ein plunker with an example from angular docs aber seine heraus gibt einen anderen Fehler zu setzen

Edit 1:

Wie AJT_82 vorgeschlagen, änderte ich meinen Konstruktor constructor(private fb: FormBuilder){. Doch nun seine mir geben einen weiteren Fehler

enter image description here

+1

ändern Konstruktor ... https://plnkr.co/edit/tEoVU9enXRGWOClJWVQT?p=preview – Alex

+0

@ AJT_82 Warum seine funktioniert es nicht wie die Art und Weise, wie in docs https://angular.io/docs/ts/latest/api/forms/index/FormBuilder-class.html –

+1

Welche Version von Angular verwenden Sie? Der zweite Fehler, den Sie bekommen, ist, dass Sie ReactiveFormsModule (und FormsModule) höchstwahrscheinlich importieren müssen. – Alex

Antwort

2

ändern, wie Sie versuchen, die FormBuilder im Konstruktor von zu injizieren:

constructor(@Inject(FormBuilder) fb: FormBuilder) 

einfach:

constructor(private fb: FormBuilder) 

Wie Für den zweiten Fehler würde dies bedeuten, dass Sie sicherstellen müssen, dass Sie beidehabenund ReactiveFormsModule in Ihrer App-Modul:

import { FormsModule, ReactiveFormsModule } from '@angular/forms'; 

@NgModule({ 
    imports: [ 
    FormsModule, 
    ReactiveFormsModule, 
    ] 
    .... 
}) 
Verwandte Themen