Chrome的撤消功能未注册下拉选择

时间:2019-01-17 14:35:41

标签: angular typescript google-chrome

我有一个自定义输入组件,该组件可通过下拉列表扩展文本输入,并根据以前的用户输入提供建议。当我随后选择其他建议,然后通过 按CTRL + Z使用Chrome的撤消功能时,它将在字段中连接前一个字符串而不是替换当前字符串

例如,当我首先选择建议“ AAA”,然后将其删除,然后选择“ BBB”并按CTRL + Z,输入中包含字符串“ BBBAAA”。

因此,Chrome似乎未将下拉菜单中的字符串插入注册为对撤消堆栈上DOM的修改。由于上次注册的操作是删除字符串,因此undo函数会将其连接到当前字符串。

在Chrome和Internet Explorer 11中会发生这种情况,在Firefox中我没有任何问题。


我尝试针对自定义指令的给定输入 抑制CTRL + Z撤消功能

@HostListener('keydown', ['$event']) onKeyDown(e: KeyboardEvent) {
  if (e.ctrlKey && e.keyCode === 90) {
    e.preventDefault();
  }
}

但是,我仍然可以通过在另一个输入字段中按CTRL + Z来撤消输入的更改,因此必须禁用整个站点的撤消功能。

如何 告诉Chrome将输入更改添加到其撤消堆栈中

这是下拉输入的简单回调函数,当选择了下拉项时,该函数会更新值:

(contact) => {
  if (this.formGroup) {
    this.formGroup.patchValue(contact);
  }
}

patchValue()代替setValue()似乎没有什么区别,调用this.formGroup.markAsTouched();也没有什么作用。

0 个答案:

没有答案