2016-09-21 150 views
0

我有一个表格创建动态表单跟在cookbook之后的教程现在我想捕捉一些输入变化时如何添加(change)事件,发送函数作为参数调用;像在输入角度2动态表格上添加事件

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

感谢

回答

2

既然你动态地创建这种形式,因此,应该有机会获得它在你的控制器。 Angular 2使用了概念FormControl这是一个非常强大的工具,用于与窗体控件进行交互。我将跳过了很多的细节,但我会指出几件事情:

你就可以访问FormControl.valueChanges,这可能不是从DOC是显而易见的,因为从FormControl AbstractControl继承,提供了大量有用的功能的超类,其中很大一部分与Angular 1表单功能非常相似。

本质上,你要做的是利用观测值。如果你不熟悉它们,你应该阅读它们。 Christoph Burgdorf has a great article on them实际上,对你来说很方便,使用FormControl.valueChanges作为他如何使用它们的示例的一部分。哦,真是美好的一天!

但基本上,概括地说,你打算沿着这些路线做一些事情:

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

显然,这假设你已经得到了你想要的反应形式控制的实例至。

它是非常重要的是,在你的控制器ngOnDestroy方法使用观测您当退订;否则订阅将在您完成后停留,并且您有内存泄漏。