Элемент управления не помещается или не перемещается в массив формы Angular 6 - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть переменная строка в таком формате: id={ID}&sdv={sdvsdbsdb.:}

Мне нужно получить содержимое между двумя { } и вставить его в массив групп форм.

Шаблон, который я использую, чтобы соответствовать этому: \{([a-zA-Z\:\.]*?)\}

Изначально я использовал более простое регулярное выражение \{(.*?)\}, но проблема в том, что если вы берете id={ID}&sdv={sdvsdbsdb.:} и удаляете первое }, оно будет соответствовать всей строке от первого { до первого }.

Функция, которую я использую для этого, такова:

while ((matched_parameter = pattern.exec(redirect_string)) != null) {
    let redirect_found: boolean = false;
    for (let index in parameters.controls) {
        if (parameters.controls[index].value['key'] == matched_parameter[1]) {
            redirect_found = true;
            break;
        }
    }
    if (!redirect_found && matched_parameter[1] != '') {
            (<FormArray>this.form_group.get('parameters')).controls.unshift(this.form_builder.group({
                "key": matched_parameter[1],
                "internal": false,
                "source": "record",
                "field": "panelist_id",
                "varies_by_status": false
            }));
    }
}

Это работает и соответствует любому из параметров, которых уже нет в списке, но когда он говорит, что добавил в массив, новое значение не появляется.

...