javascript - 如何在Angular 2中解析并将一个字段中的值填充到另一个字段中
问题描述
我有一个带有两个输入字段的简单表单。我想从一个字段中获取文本并剪切第一部分并将其替换为其他文本并动态地将其填充到第二个字段中。我能够轻松地从现场获得部分,但我不确定如何在 keyup 上剪掉值。以下是代码: 组件 HTML
<div class="labels">Real Name</div>
<div class="lbl">
<input #realName type="text" [(ngModel)]="actualName" (keyup)="trigger()">
</div>
<div class="labels">Cyber Name</div>
<div class="lbl">
<input #cybName type="text"[(ngModel)]="cyberName">
</div>
组件 TS
@ViewChild('realName') realName: ElementRef;
@ViewChild('cybName') cybName: ElementRef;
trigger() {
this.cybName.nativeElement.value = this.realName.nativeElement.value;
}
在每次键入时,我都将 cybName 的值设置为 realName。但是,我想剪掉 realName 的前 4 个字符并将其替换为 droid 和 realName 的剩余字符,即,如果输入的真实姓名是“Alexys”,我想将其设为“droidys”。
我确信我不应该用 keyup 来做,但我不确定在这种情况下还能使用什么。任何人都可以帮我解决它。谢谢你。
解决方案
我认为一个简单的解决方案可以解决您的问题:
html中的变化:
<input #realName type="text" [ngModel]="actualName" (ngModelChange)="trigger($event)">
ts的变化:
trigger(newActualName) {
this.actualName = newActualName;
this.cyberName = `Droid${event.substring(4)}`;
}
当您更新模型 (actualName
和cyberName
) 时,它还将使用新值更新输入。
另外:Angular 警告不要ElementRef
直接使用和访问 DOM。请参阅此处了解更多信息
推荐阅读
- angularjs - 在 angularjs 中使用量角器来自 grunt serve 命令的 Api 基本 URL
- ios - 应用因 3.1.1 被拒绝 - 业务 - 付款 - 应用内 (World Pay)
- reactjs - React + Redux PUT api 请求编辑我的 redux 存储中的数据
- angularjs - 检查 gridOptions 中是否存在行
- javascript - 如何仅使用本机 Promise 编写异步计数器,即具有异步代码同步接口的计数器?
- python - QPrinter 和 QPainter 从 TreeView 打印到 PDF 错误
- garbage-collection - Linux 中的 Mono GC:为什么要占用更多的内存、更多的时间来做 GC 和 GetTotalMemory 的成本如此之高?
- c++ - tcp 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- java - javafx 将并发绘制到多个画布中
- c++ - Code::Blocks C++ 用 MacOS Mojave 编译:致命错误:sys/cdefs.h:没有这样的文件或目录