Ho il seguente problema. Voglio lavorare con NG2 Forms. Secondo la documentazione angular 2, usando la direttiva ngForm sul form e la direttiva ngControl sull'input, il form dovrebbe sempre avere accesso alla validità dell'input.
Questo funziona se gli input sono nello stesso componente del modulo, ma non appena trasferisco gli input in una direttiva figlio, non ottengono più ngForm-Provider.
Questo funziona:Form-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: ""
}
}
Tuttavia, questo non:
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: ""
}
}
Dato che questo getta:
EXCEPTION: No provider for t! (t -> t) in [null]
Appena posso rimuovere la ngControl-attributo dal l'input, l'errore scompare, ma il modulo nel genitore non riceve alcuna informazione sull'input Di Più. Come faccio a passare il ngForm al componente figlio?
Grazie in anticipo.
usare 'fasci dev' eseguire il debug, si otterrà il messaggio di errore corretto. –
Questo purtroppo mi dice solo la parte del codice in cui si verifica l'errore, invece del [null] sopra. Sapevo già dove si verifica specificamente però. –