Angular2 ngModelChange previous value

前端 未结 4 1523
醉酒成梦
醉酒成梦 2020-12-25 11:13

Is there a way to get the previous(last) value of a field on ngModelChange? What I have goes something like this

HTML



        
相关标签:
4条回答
  • 2020-12-25 11:32
    <input (ngModelChange)="preTextChanged($event)" [(ngModel)]="text" (ngModelChange)="postTestChanged($event)">
    

    In this way you can know the previous value and the next value

    0 讨论(0)
  • 2020-12-25 11:41

    What you can do is,

    DEMO : http://plnkr.co/edit/RXJ4D0YJrgebzYcEiaSR?p=preview

    <input type="text" 
           [ngModel]="text"                      //<<<###changed [(ngModel)]="text" to [ngModel]="text"
           (ngModelChange)="textChanged($event)"> 
    
    private textChanged(event) {        
        console.log('changed', this.text, event);
        this.text=event;                          //<<<###added 
    }
    
    0 讨论(0)
  • 2020-12-25 11:41

    So found kinda weird(at least for me) possible solution for this with least changes in the code in question. So on assigning the (ngModelChange) attribute before [(ngModel)] what I get is following with the same handler:

    changed *older value* *new value*
    

    I get the new value in this.textlike so:

    setTimeout(() => console.log(this.text), 0);
    
    0 讨论(0)
  • 2020-12-25 11:55

    all you need to do is to put (ngModelChange)="textChanged($event)" to the left of [(ngModel)] element in the html tag, like:

    <input (whatever...) (ngModelChange)="textChanged($event)" [(ngModel)]="text">
    

    This way, inside textChanged(event), the element you are binding to still has the previous value, while event is the new one

    If you type

    <input (whatever...) [(ngModel)]="text" (ngModelChange)="textChanged($event)">
    

    The event will be called with new value only. However:

    <input (whatever...) (ngModelChange)="textChanged($event)" [(ngModel)]="text" (ngModelChange)="textChanged($event)">   - 
    

    Will get you both events with previous and current value

    0 讨论(0)
提交回复
热议问题