Ich habe das folgende Problem. Ich möchte mit NG2 Forms arbeiten. Gemäß der Dokumentation von angular 2, mit der ngForm-Direktive auf dem Formular und der ngControl-Direktive auf der Eingabe, sollte das Formular immer Zugriff auf die Gültigkeit der Eingabe haben.
Das funktioniert, wenn die Eingaben in der gleichen Komponente wie das Formular sind, aber sobald ich die Eingaben in eine Child-Direktive verschiebe, bekommen sie den ngForm-Provider nicht mehr.
Dies funktioniert:Formular-Provider ngForm
import { Component, Input } from 'angular2/core';
import { FORM_DIRECTIVES } from 'angular/common';
@Component({
directives: [FORM_DIRECTIVES],
template: `
<form #heroForm="ngForm">
<input type="text"
[(ngModel)]="input.test"
ngControl="name">
</form>
`
})
export class FormTest1 {
public input = {
test: ""
}
}
Allerdings bedeutet dies nicht:
import { Component, Input } from 'angular2/core';
import { FORM_DIRECTIVES } from 'angular/common';
@Component({
directives: [FORM_DIRECTIVES],
template: `
<input *ngIf="data"
[(ngModel)]="data.test"
ngControl="name">
`
})
export class FormInput {
@Input() data;
}
@Component({
directives: [FormInput, FORM_DIRECTIVES],
template: `
<form #heroForm="ngForm">
<form-input
[data]="input">
</form-input>
</form>
`
})
export class FormTest1 {
public input = {
test: ""
}
}
Da dies wirft:
EXCEPTION: No provider for t! (t -> t) in [null]
Sobald ich das ngControl-Attribut entfernen Bei der Eingabe verschwindet der Fehler, aber die Form im Elternteil erhält keinerlei Informationen über die Eingabe Mehr. Wie gehe ich vor, um die ngForm an die Kindkomponente zu übergeben?
Vielen Dank im Voraus.
Verwenden Sie die 'dev' Bündel zu debuggen, müssen Sie die richtige Fehlermeldung. –
Dies teilt mir leider nur den Teil des Codes mit, in dem der Fehler auftritt, anstelle von [null]. Ich wusste aber schon, wo es konkret vorkommt. –