2016-05-26 3 views
1

Я создал форму с использованием NgForm и добавил к ней некоторые элементы управления. Форма используется для базового чата.Angular2 RC1 значение управления обновлением в controlGroup

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

Я пробовал различные вещи, но ничего не работает ...

Вот некоторые вещи, которые я пробовал.

sendMessage(formValues) { 
    formValues.message = ''; // This works but the view doesn't update so there is evidently no binding or observers attached. 
    formValues.message.value = ''; // This throws an error that type string doesn't value defined 
    formValues.message.val(''); // This throws an error that type string doesn't contain a method val() 
    formValues['message'] = '' // This works but the view doesn't get updated so there is evidently no binding/observers here. 
    formValues.message.updateValue(''); // This also throws an error that type string doesn't have a updateValue() method. 
} 

Heres шаблон вид:

<form name='chat-form' (ngSubmit)='sendMessage(messageForm.value)' #messageForm='ngForm'> 
    <input class='message-body' ngControl='message' placeholder='Enter your message'/> 
    <button type='submit'>Send</button> 
</form> 

Там должен быть способ сделать такой основной основное действие на форме, например, обновление значения от контроллера или модели, но до сих пор я вышли на сухую.

+0

formValues ​​является контрольная группа? – Blacksonic

+0

Да, я добавил код шаблона выше, чтобы показать, как ControlGroup создается с помощью директивы ngForm – efarley

ответ

2

По какой-то причине ControlGroup, когда вы пытаетесь получить Control от него, хочет вернуть значение типа AbstractControl в котором отсутствует функция updateValue()

Если вы приводите его к Control он должен работать. например

(<Control>yourControlGroup.controls['some_form_field']).updateValue('new value'); 

В вашем случае, возможно, следующий будет работать при условии, formValues имеет тип ControlGroup (если нет, пожалуйста, указать, что это такое):

(<Control>formValues.controls['message']).updateValue('') 

или, возможно,

(<Control>formValues['message']).updateValue('') 
Смежные вопросы