2016-10-13 3 views
1

Могу ли я получить FormGroup - родительский элемент FormControl, который у меня есть? так:angular 2: get FormGroup by FormControl

onBlur(formControl: FormControl) { 
    var formGroup = formControl.parent // a FormGroup has the FormControl 
    if (formControl.dirty) { 

     console.log(formControl); 
    } 

} 

ответ

4

Вы не можете получить доступ к родителю FormControl (см: https://github.com/angular/angular/issues/5635). Но вы можете получить доступ к родительскому элементу с помощью управляемых формами форм.

constructor(private fb: FormBuilder) { 

this.form = fb.group({ 
    name: [], 
    address: fb.group({ 
    city: ['', Validators.required], 
    street: ['', Validators.required], 
    zipCode: '', 
    year: 2016 
    }), 
    groupDates: fb.group({ 
    fromDate_g: [''], 
    toDate_g: ['', Validators.required] 
    }, {validator: Validators.required}), 
    dates: fb.group({ 
    fromDate: '', 
    toDate: '' 
    }) 
    }); 

    let datesGroup = this.form.controls['dates'] as FormGroup; 


} 
+0

Удовлетворительно, не подходит для высоких стандартов доступа в угловом ... –

+0

Для этого есть запрос на растяжение. Скажите, для чего вам это нужно. Мне удалось сделать некоторые обходные пути для механизмов, которым необходим доступ к родительскому контенту FontControl. – jmachnik

+0

Я разрабатываю приложение с автосохраняющими формами. то есть любой элемент управления, который был изменен пользователем, немедленно отправляется на сервер. Я предпочитаю делать универсальную функцию, чтобы сделать это, поэтому мой подход заключается в том, чтобы хранить внутри FormGroup (с помощью модели) некоторые метаданные, а затем отправлять FormControl в функцию, функция принимает правильное решение о том, отправлять ли сервер обновлений. Эта функция специализируется исключительно на обновлении информации на сервере, и я предпочитаю, чтобы моя команда передавала один параметр функции, чтобы уменьшить ошибки и несогласованность. –

1

Представляется возможным, но против конвенций.

getParentForm(formControl: FormControl): FormGroup { 
    return formControl['_parent']; 
} 

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

  • Нет связанных вопросов^_^