Как получить имя поля ввода, значение которого изменилось [Angular 6] - PullRequest
0 голосов

Я пробовал реактивную форму valueChanges, но метод valueChanges не возвращает имя поля ввода, которое изменилось.

Я думал, что код такой.но я думаю, что это не умный способ.Потому что я должен сравнивать каждое поле ввода.поэтому мне нужен более умный способ.

  // get init view data from local storage
  this.localstorageService.getPlaceDetail().subscribe(data => {
    this.initPlaceDetail = data;
    // watch changed value 
    this.editPlaceForm.valueChanges.subscribe(chengedVal => {

      if (chengedVal['ja_name'] !== this.initPlaceDetail.languages.ja.name.text) {
        this.changedJA = true;
      }
      if (chengedVal['ja_romaji'] !== this.initPlaceDetail.languages.ja.name.romaji) {
        this.changedJA = true;
      }
      // ...... I have to check all input fields??
    });
  });

Ответы [ 2 ]

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

Я добавляю элементы управления формы из массива, и что-то вроде этого сработало для меня.Просто ссылайтесь на нужный вам предмет, а не ожидайте, что наблюдаемое значение ValueChanges передаст его вам.

myFields.forEach(item => {
    const field = new FormControl("");
    field.setValue(item.value);
    field.valueChanges.subscribe(v => {
          console.log(item.name + " is now " + v);
    });
});
0 голосов
/ 31 мая 2018

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

this.myForm.get('ja_name').valueChanges.subscribe(val => {
    this.formattedMessage = `My name is ${val}.`;
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...