【发布时间】:2018-01-25 20:21:51
【问题描述】:
我正在尝试创建一个指令,通过添加指向以 @ 符号开头的子字符串的链接来修改元素的 innerHTML。
这是我迄今为止尝试过的,
linkify.directive.ts
constructor(private elementRef: ElementRef, private renderer: Renderer2) {
let elementText = this.elementRef.nativeElement.innerHTML;
// elementText = '@user mentioned you';
console.log(`Element Text: ${elementText}`);
this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', this.stylize(elementText));
}
我就是这样用的
<p linkify> Hey @user check this out! </p>
在调试时我做了以下观察,
-
this.elementRef.nativeElement.innerHTML总是有一个空字符串。 -
this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', 'something');追加something到元素文本的开头,而不是替换。
问题一:如何访问元素的innerHTML?
问题2:如何通过指令设置元素的innerHTML?
Stackblitz demonstrating the problem
我尝试了Renderer2 的文档,但对我没有帮助。
【问题讨论】:
-
改为管道并使用 dom sanitizer