Насколько я понимаю, ваша проблема - это поведение отправки по умолчанию тега формы, которое вызывает событие отправки при нажатии клавиши Enter.
Чтобы предотвратить это событие, вы можете использовать следующий код
jQuery(document).ready(function(){
jQuery("form.app-search").submit(function(e){
e.preventDefault();
});
})
Где jQuery("form.app-search")
- селектор jquery, который ищет теги формы, имеющие класс app-search
, даже вы можете написать очень специфический идентификатор (# селектор).
Попробовать FIDDLE
Надеюсь, это сработает для вас.
Если вы проверите typeof любого вложенного (или родительского) FormGroup
, он всегда будет возвращать объект. так что вы можете просто преобразовать вашу переменную типа объекта следующим образом -
apiForm : Object;
...
this.apiForm = this.serviceItemForm.get('api');
Иначе, вы можете выполнить приведение типов во время присвоения значения такой переменной -
apiForm : FormGroup;
this.apiForm = (<FormGroup>this.serviceItemForm.get['api']);
Вы можете попробовать код ниже:
serviceItemForm: FormGroup;
apiForm : FormGroup;
this.apiForm = this.fb.group({
'apiurl': new FormControl(''),
'apimethod': new FormControl(''),
'headers': this.fb.array([]),
'payload': '',
});
this.serviceItemForm = this.fb.group({
'name': new FormControl('', Validators.required),
'description': new FormControl('', Validators.required),
'categoryIds': new FormControl([], Validators.required),
'tags': [],
'status': '',
'orderFormType': new FormControl([], Validators.required),
'orderFormKey': new FormControl([], Validators.required),
'workflow': [],
'orderFormAction': new FormControl('', Validators.required),
'customUI': new FormControl(''),
'api': this.apiForm,
'userGroup': []
});