в угловых, как получить предыдущее значение select / ngModel после изменения события огонь - PullRequest
0 голосов
/ 28 апреля 2018

Я работаю с формой Angular 2 и имею раскрывающийся список / выбор в шаблоне, данные которого связаны с событиями ngModel и onChnage. Мне нужно определить предыдущее значение ngModel? Я пробовал с данными- * атрибуты https://www.w3schools.com/tags/att_global_data.asp, чтобы сохранить текущее значение в нем, надеясь, что оно не изменится со значением ngModel, с последующей отправкой обратно при возникновении события, но с получением значения NaN при передаче изменения.

раскрывающиеся / выбираемые начальные значения отображаются из массива, являющегося вопросом [], текущее значение по умолчанию - в "question.value"

шаблон

<div *ngSwitchCase="'dropdown'"> <small>dropdown</small>
           <div class="form-group">
                {{question.value}}
               <select [id]="question.key" 
                       [formControlName]="question.key" 
                       [(ngModel)]="question.value"  
                       data-default-element="question.value"     
                       (change)="onChangeValue($event, responseId, question.key, data-default-element , 'dropdown')" 
                       (blur)="onChangeValue($event, responseId, question.key, data-default-element , 'dropdown')"
                       >

                   <option *ngFor="let opt of question.options" 
                           [value]="opt.key" >{{opt.value}} </option>
               </select>
           </div>            
       </div>  

1010 * компонент * onChangeValue(event: any, givenResponseId:string, givenQuestionId:string, defaultValue:string, givenInputType:string) { var givenAnswer = null; console.log("defaultValue ",defaultValue); if(event.target.value !="") { givenAnswer = event.target.value; console.log("newValue ",givenAnswer ); } }

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Вы должны рассмотреть возможность использования OnChanges из '@ angular / core'. При этом вы можете получить текущее и предыдущее значение. Вот пример. Обратите внимание, что он работает только для атрибута типа Input

import { Component, Input, SimpleChanges, OnChanges } from '@angular/core';

@Component({
 selector: 'app-your-selector',
 templateUrl: './template-path.html',
 styleUrls: ['./style-path.css']
})
export class myComponent implements OnChanges{

 @Input() myAttribute : string;//This should be your ngModel attribute

 ngOnChanges(changes : SimpleChanges ){
   if(changes["myAttribute"]){
    let currentValue = changes["myAttribute"].currentValue;
    let previousValue = changes["myAttribute"].previousValue;
   }
  }
}
0 голосов
/ 28 апреля 2018

Если вы удалите ngModel из своей формы и передадите question.value вместо data-default-element в свой метод изменения, вы получите предыдущее значение. Затем вы можете обновить question.value в вашем методе изменения, чтобы обновить его с заданным ответом, если хотите. ngModel будет двусторонне связывать данные, обновляя значение вашего question.value, когда пользователь вводит что-то в форму.

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