代码之家  ›  专栏  ›  技术社区  ›  Xalion

我能得到上一个值形式(change)=“$event”吗?

  •  -1
  • Xalion  · 技术社区  · 6 年前

    我想知道我是否能从角事件中得到关于先前值的信息。我尽量避免在变量中存储以前的值。我试图在$event对象中找到适当的属性,但没有找到任何内容。

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

    stackblitz with this problem

    2 回复  |  直到 6 年前
        1
  •  2
  •   David Anthony Acosta    6 年前

    是的,这是可能的,但是你必须改变周围的事物。

    <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

        2
  •  1
  •   DeborahK    6 年前

    没有看到任何代码。。。我不知道你是怎么得到这个的。

    如果你指的是 @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。它会跟踪应用程序的状态。