1

クックブックのチュートリアルに従って動的フォームを使用してフォームを作成しました。入力が変更されたときにキャッチして、(change)イベントを追加し、関数をパラメーターとして呼び出す方法を送信します。何かのようなもの

  new TextboxQuestion({
    key: 'test',
    label: 'Test ',
    type: 'text',
    onChange: 'test()',
    order: 0
  }) 

ありがとう

4

1 に答える 1

4

このフォームを動的に作成しているため、コントローラーでフォームにアクセスできる必要があります。Angular 2 は、フォーム コントロールと対話するための非常に強力なツールであるFormControlの概念を使用します。多くの詳細は省略しますが、いくつかの点を指摘します。

FormControl.valueChanges にアクセスできます。これは、 FormControl がAbstractControlから継承されているため、そのドキュメントからは明らかではない可能性があります。これは、便利な機能の膨大なチャンクを提供するスーパークラスであり、その多くは Angular 1 フォーム機能に非常に似ています。

基本的に、あなたがしようとしていることは、オブザーバブルを活用することです。それらに慣れていない場合は、それらについて読む必要があります。Christoph Burgdorf はそれらについて素晴らしい記事を書いており、実際には便利なように、それらの使用方法の例の一部として FormControl.valueChanges を使用しています。ああ、なんて素敵な日でしょう!

しかし、基本的には、次の行に沿って何かをしようとしています。

this.textboxControl.valueChanges.subscribe(value => {
   //... do your stuff here with 'value'
});

これは明らかに、反応したいフォーム コントロールのインスタンスがあることを前提としています。

オブザーバブルを使用する場合、コントローラーの ngOnDestroy メソッドで UNSUBSCRIBE することが非常に重要です。そうしないと、サブスクリプションを使い終わった後もサブスクリプションがハングアップし、メモリ リークが発生します。

于 2016-09-21T19:02:09.153 に答える