私は次の問題があります。 NG2フォームで作業したい。角度2のドキュメントによると、フォーム上のngFormディレクティブと入力側のngControlディレクティブを使用すると、フォームは常に入力の有効性にアクセスする必要があります。
これは、入力がフォームと同じコンポーネントにある場合に機能しますが、入力を子ディレクティブに移動するとすぐにngForm-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: ""
}
}
しかし、これにはない:
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: ""
}
}
これはスローのよう:
EXCEPTION: No provider for t! (t -> t) in [null]
をできるだけ早く私からngControl属性を削除して入力はエラーが消えますが、親のフォームは入力に関する情報を何も受け取りませんもっと。 ngFormを子コンポーネントに渡すにはどうしたらいいですか?
ありがとうございます。
あなたは正しいエラーメッセージが表示されます、デバッグに 'dev'バンドルを使用してください。 –
これは残念なことに、上記の[null]ではなく、エラーが発生したコードの部分だけを示しています。私はそれがどこで具体的に起こっているかはすでに知っていた。 –