在输入角度2动态形式上添加事件

时间:2016-09-21 17:54:01

标签: javascript angular dynamicform

我在cookbook的教程后面有一个动态表单创建表单现在我想在某些输入发生变化时捕获,所以如何添加(change)事件,发送函数作为参数调用;

之类的东西
  new TextboxQuestion({
    key: 'test',
    label: 'Test ',
    type: 'text',
    onChange: 'test()',
    order: 0
  }) 

感谢

1 个答案:

答案 0 :(得分:2)

由于您是动态创建此表单,因此您应该可以在控制器中访问它。 Angular 2使用 FormControl 的概念,这是一个非常强大的工具,可以与表单控件进行交互。我会跳过很多细节,但我会指出一些事情:

您可以访问FormControl.valueChanges,这可能在该文档中不明显,因为FormControl继承自 AbstractControl ,这是一个提供大量有用的功能,其中大部分与Angular 1表单功能非常相似。

基本上,您要做的是利用 observables 。如果你不熟悉它们,你应该阅读它们。 Christoph Burgdorf has a great article on them 实际上,您可以方便地使用FormControl.valueChanges作为其示例的一部分,了解如何使用它们。哦,这是多么美好的一天!

但基本上,简而言之,你希望沿着这些方向做点什么:

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

这显然假设你有一个你想要反应的表单控件的实例。

非常重要 在控制器的ngOnDestroy方法中使用observable时,你 UNSUBSCRIBE ;否则订阅将在您完成后暂停,并且您有内存泄漏。