[英]Angular reactive form setting value with HTML string
我正在尝试使用patchValue
方法将字符串值设置为控件。 字符串值包含HTML标记,但是出于某些原因,HTML标记被转换为纯文本。
<textarea rows="5" name="myField" formControlName="myField" readonly></textarea>
const htmlStr = '<p>HTML Content HERE</p>'
// assuming the form group instance already created
this.form.get('myField').patchValue(this.htmlStr);
Angular API文档并没有过多地提及patchValue如何处理HTML值,尽管它非常通用。
向文本区域添加HTML字符串将始终在文本区域中显示为纯HTML。
[innerHTML]
仅可应用于span / div或段落元素。 如果在输入字段中使用html标记,则不能期望html标记显示为或(显示在HTML页面标记中)。 它将始终显示为原始。
话虽这么说,您始终可以将HTML字符串打补丁到您的文本区域,但不要期望它以HTML标记的所有样式显示。
您可以在此处检查此stackBlitz
例:
var domElementP = document.createElement("p");
domElementP.textContent = 'TEXT HERE';
this.form.get('myField').patchValue(this.domElementP);
jQuery
库允许更轻松地创建DOM元素。
例如:
// we assume that jQuery was loaded
var stringDOM = '<p>' +
'<span>HTML Content HERE <i class="icon"></i></span>' +
'</p>';
var $jQueryObject = $.parseHTML(stringDOM);
var domElement = $jQueryObject[0];
this.form.get('myField').patchValue(this.domElement);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.