我可以获取先前的值形式(更改)=“​​ $ event”吗?

时间:2018-07-27 16:45:27

标签: angular

我想知道是否可以从角度事件中获取有关先前值的信息。我尽量避免将先前的值存储在变量中。我试图在$ event对象中找到合适的属性,但没有找到任何东西。

在我更大的项目中,我从http服务获得了数组。

stackblitz with this problem

2 个答案:

答案 0 :(得分:2)

是的,这是可能的,但是您必须进行一些更改。

<select class="form-control form-control-sm" (ngModelChange)="actions(selectedValue, $event); selectedValue = $event" [ngModel]="selectedValue">

...

  actions(previousValue, newValue) {
    this.valueFromAction = newValue; // value chose by user
    // selectedValue equals valueFromAction now
    // how can i got previous value here?
    this.previousValue = `The previous value was ${previousValue}`;
  }

工作示例:

https://stackblitz.com/edit/angular-tuinvh?file=src%2Findex.html

答案 1 :(得分:1)

没有看到任何代码...我不确定您的情况如何。

如果您引用的是@Input()属性,则可以使用传入的SimpleChanges

export class CriteriaComponent implements OnInit, OnChanges {
  @Input() displayDetail: boolean;

  ngOnChanges(changes: SimpleChanges): void {
    console.log(changes['displayDetail'].previousValue);
    console.log(changes['displayDetail'].currentValue);
  }
}

如果使用的是反应形式,则有两个值:原始值和当前值

如果只希望select元素保留先前的值,则没有内置的方法可以做到这一点。它只有一个value

对于较大的项目,您可能需要考虑使用NgRx。它跟踪您的应用程序状态。