В 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 ()