Как я могу получить полный путь FormControl в угловых 4+ - PullRequest
0 голосов
/ 04 июля 2018

Как я могу получить полный путь FormControl в угловых 4 +?

У меня есть реактивная форма:

{
    name: '',
    address: {
        city: '',
        country: ''
    }
}

И мне нужно получить полный путь контроля:

const addressFormGroup = this.form.get('address');
const cityControl = addressFormGroup.get('city');
cityControl.plsGiveMeFullPath() //address.city

Существует ли способ получения полного пути cityControl: FormControl | FormGroup

1 Ответ

0 голосов
/ 23 августа 2018

Я реализовал эти два метода, чтобы получить эту функциональность.

Первый - это помощник, который возвращает имя элемента управления (так как он проиндексирован в его родительском элементе). Функция достигает этого путем поиска в объекте controls своего родителя элемента управления, равного тому, который вы ему дали, и затем возврата ключа.

Вторая - это рекурсивная функция, которая вызывает возвращаемое имя элемента управления с помощью описанного выше помощника и вызывает себя для родительского элемента управления, объединяя возвращаемую строку с точками ('.').

  getControlName(c: AbstractControl): string | null {
    if(!c.parent) return null;
    const formGroup = c.parent.controls;
    return Object.keys(formGroup).find(name => c === formGroup[name]) || null;
  }

  getControlPath(c: AbstractControl, path: string): string | null {
    path = this.getControlName(c) + path;

    if(c.parent && this.getControlName(c.parent)) {
      path = "."+path;
      return this.getControlPath(c.parent, path);
    } else {
      return path;
    }

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...