【问题标题】:Mat-autocomplete long string, cursor appears at end of string, how to get cursor at start of string?Mat-autocomplete长字符串,光标出现在字符串的末尾,如何在字符串的开头获取光标?
【发布时间】:2020-01-08 02:25:07
【问题描述】:

我不知道如何在 stackoverflow 中为 Angular 应用程序运行代码 sn-p,

我正在使用 mat-autocomplete ,我选择了 128 个字符长的名称,光标附加在所选字符串的末尾而不是开头。有人在使用 mat-autocomplete 时观察到这一点吗?

这是一个例子, 在 stackblitz 链接link to code 中,我只是为加利福尼亚添加了字母“v”,当我选择“加利福尼亚”时,我看到光标位于末尾,而我希望光标位于字符串的开头。

在 app > app.component.ts 下的代码链接中,检查状态变量,将 name 属性更改为 128 字符长的字符串,然后从下拉选择选项中,您将看到光标出现在字符串的末尾。

【问题讨论】:

  • 这是一项功能,而不是错误。自动完成实现了用户输入选择的行为。
  • 你好安德鲁,谢谢你的回复;对于我的要求,我可以覆盖它吗?
  • 我有类似的东西,但这是在 javascript 中,我如何在 typescript 中使用它? codepen.io/qzzd/pen/RwNWmaX

标签: angular typescript mat-autocomplete


【解决方案1】:

使用inputtextarea 无需创建自定义Range,因为它们提供了自己的API,在我们的例子中setSelectionRange() 就是我们所需要的。但是在使用之后,输入的内容仍然是隐藏的,但看起来 blur()focus() 可以解决问题。

optionSelected(input: HTMLInputElement) {
  input.blur();
  input.setSelectionRange(0, 0);
  input.focus();
}

<input ... #input>
<mat-autocomplete ... (optionSelected)="optionSelected(input)">

DEMO

【讨论】:

  • 嗨,开发者,这是完美的解决方案:),我一直在互联网上搜索这个解决方案,你是怎么找到这个的?
  • 嗨,经验和想象力:D 不能说它的完美/也许在这个简单的情况下是完美的,因为解决方案非常简单。您可以在 IDE 中检查 Object 以查看它提供了哪些方法,setSelectionRange 是非常不言自明的。然后在 MDN 上查看。而对于blur()focus() - 这就是想象力:D 选择在 DOM 中只能是一个,所以当你聚焦时,光标所在的位置就是
  • 您好,开发者,我添加了一个新问题stackoverflow.com/questions/59670262/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
相关资源
最近更新 更多