Обновление значения элемента управления формы на основе поля класса в Angular - PullRequest
0 голосов
/ 26 февраля 2020

В Angular есть форма, в которой контрольное значение присваивается полю класса (это массив). Когда я обновляю его, присваивая массив, значение формы не обновляется. Но когда я обновляю его, нажимая новый элемент, он работает.

   sharedUsers = [123]

   this.form = fb.group({
        shared: [this.sharedUsers],
    });

    //Option 1 - not working as expected

    this.sharedUsers = [123, 124];
    this.form.value.shared //[123]

    //Option 2 - working as expected
    this.sharedUsers.push(124);
    this.form.value.shared //[123, 124]

Почему это так работает? Это связано со ссылкой на память? Является ли хорошей идеей назначить управляющее значение для поля класса, или я должен обновить поле следующим образом:

this.form = fb.group({
    shared: [[]],
});

this.form.patchValue({shared: [111, 123]})

РЕДАКТИРОВАТЬ

Я понял, что я не обновлял состояние формы после назначения нового ценность. Когда я сделал:

//Option 1
this.sharedUsers = [123, 124];
this.form.get('shared').patchValue(this.sharedUsers)

, тогда это работает, как ожидалось. Таким образом, я могу сказать, что проблема решена ... но мне все еще странно, почему она работала с Array.prototype.pu sh ()

...