在我的按钮(鼠标按下)之前强制其他组件 运行(更改)

Force other components to run (change) before my button's (mousedown)

我有一个 formly with mousedown 按钮,它有一个名为“analyzeClick()”的方法

<button *ngIf="show" (mousedown)="analyzeClick()" id={{htmlID}}>
  {{label}} 
</button> 

现在,我们也有输入 有一个(更改)事件运行一个名为“saveData()”的方法

<input id={{htmlID}} type="text" [formControl]="frmControl" (change)="saveData()"  /> 

但是,我们发现在您输入输入并立即单击按钮后,(mousedown) 先运行 before(更改) 问题是 analyzeClick 上的方法需要 saveData 上的数据..

我已尝试按指定应用超时

public analyzeClick(): void {
        

        let i = 0;
        (() => {
            if (++i > 1) {
                return;
            }
            setTimeout(function(){
                console.log('Iteration: ' + i);
            }, 15000);

            this.runTheCode();
        })();
}

但是,按钮的(鼠标按下)在输入的(更改)之前先运行

在这种情况下,我需要做什么才能确保输入的(更改)先于(鼠标按下)运行??

有 4 个事件需要考虑:

  • change
  • input
  • mousedown
  • click

input 立即发生,因此这是绝对确保看到您的更改的一种方法。

mousedown 出现在 change 之前 - 所以在您第一次按下鼠标时,您不会获得输入的值

click 出现在 change 之后 - 因此也可以安全使用。

例如参见stackblitz