2016-09-21 1 views
0

У меня есть форма с динамической формой, следующая за учебником в cookbook. Теперь я хочу уловить, когда некоторые изменения ввода так, как можно добавить события (change), отправить функцию для вызова в качестве параметра; что-то вродедобавить событие на входной угловой 2 динамической формы

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

благодаря

ответ

2

Поскольку вы создаете эту форму динамически, вы должны, следовательно, иметь доступ к нему в вашем контроллере. Угловая 2 использует концепцию FormControl, который является очень мощным инструментом для взаимодействия с элементами управления формы. Я пропущу много деталей, но я укажу несколько вещей:

Вы получили доступ к FormControl.valueChanges, который не может быть виден из этого документа, потому что FormControl наследует от AbstractControl, суперкласс, который предоставляет огромный кусок полезной функциональности, большая часть которого очень похожа на функциональность Angular 1 forms.

По существу, то, что вы хотите сделать, это плечо наблюдаемые. Если вы незнакомы с ними, вы должны прочитать о них. Christoph Burgdorf has a great article on them и на самом деле удобно для вас использует FormControl.valueChanges как часть своего примера о том, как их использовать. О, какой прекрасный день!

Но в основном, в двух словах, вы хотите сделать что-то вдоль этих линий:

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

Это, очевидно, предполагает, что у вас есть экземпляр элемента управления формы, который вы желающему реагировать к.

Крайне важно, что при использовании наблюдаемых вы UNSUBSCRIBE в методе ngOnDestroy в контроллере; в противном случае подписка будет зависеть после того, как вы закончите с ней, и у вас будет утечка памяти.

Смежные вопросы