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 表单功能非常相似。

本质上,您要做的是利用observables。如果你不熟悉它们,你应该阅读它们。Christoph Burgdorf 有一篇关于它们的精彩文章,实际上,为了方便您,使用 FormControl.valueChanges 作为他关于如何使用它们的示例的一部分。哦,这是多么美好的一天!

但基本上,简而言之,您希望按照以下方式做一些事情:

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

这显然假设您有一个您想要对其做出反应的表单控件的实例。

非常重要的是,当使用可观察,您在控制器的 ngOnDestroy 方法中取消订阅;否则订阅将在您完成后挂起并且您有内存泄漏。

于 2016-09-21T19:02:09.153 回答