【发布时间】:2019-07-31 19:41:54
【问题描述】:
我有一个使用 angular 5 和 typescript 开发的 Angular 项目。 在我的组件的 html 模板中,我有一个文本区域框。 我想让这个文本区域中的前几个字符不可编辑。 您知道我该如何实现吗?
例如,从我的组件 ts 文件中,我可以设置初始值,例如:“RMO”到我的文本区域。
用户无法删除文本区域中设置的文本“RMO”。
我有一些 jquery 代码,我试图将其转换为打字稿。但是它也不能正常工作。 [您可以使用 jquery http://jsfiddle.net/zq4c873L/1/ 查看工作示例]
这是我在组件 html 模板中定义的文本区域
<textarea id="messageTxt" formControlName="message" rows="6" [placeholder]="'PLACEHOLDERS.MESSAGE' | translate" (keydown)="ensureMessagePrefixNonEditable(messageTxt.value)" (keyup)="calculateMessagingSegmentCount(messageTxt.value)" #messageTxt></textarea>
当用户按下一个键时,就会触发一个功能。即 ensureMessagePrefixNonEditable(messageTxt.value)。如果旧值与特定字符串不匹配,此函数会尝试替换旧值。
ensureMessagePrefixNonEditable(inputTxtMsg: string){
console.log(inputTxtMsg);
let originalValue: string = inputTxtMsg;
if( !inputTxtMsg.startsWith(this.messagePrefix.concat(' ')) ) {
this.messageControl.setValue(originalValue);
}
}
但是问题是我能够从文本区域中删除该值。非常感谢任何帮助 谢谢你
谢谢
【问题讨论】:
-
由于您不接受我的回答,您是否找到了更好的方法?
-
我有一个像你一样的解决方案。即当用户删除“初始文本”时,我将使表单无效,因此用户无法提交表单,只有在验证成功后用户才能提交表单。这是一个直接的解决方案。但是客户不接受这个解决方案,所以我的经理不接受这个解决方案,这就是为什么我不接受你的回答。非常感谢您的解决方案。
标签: angular typescript