Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用组件替换字符串的一部分?_Javascript_Html_Angular_Typescript - Fatal编程技术网

Javascript 用组件替换字符串的一部分?

Javascript 用组件替换字符串的一部分?,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,我需要在Angular中实现一个标签系统,比如Instagram或Twitter,或者任何地方 不确定什么是正确的方法 假设我们有这样一个字符串:你好#xyz你好吗? 我想把#xyz替换为 因此,最终输出将如下所示您好,您好吗? 当然,我们可以在里面放很多东西 如何做到这一点?Html <p id="msg"></p> javascript function(tag: string) { const str = tag.slice(1)

我需要在Angular中实现一个标签系统,比如Instagram或Twitter,或者任何地方

不确定什么是正确的方法

假设我们有这样一个字符串:
你好#xyz你好吗?

我想把
#xyz
替换为

因此,最终输出将如下所示
您好,您好吗?

当然,我们可以在里面放很多东西

如何做到这一点?

Html

 <p id="msg"></p>

javascript

function(tag: string) {
    const str = tag.slice(1); //removes # from string
    document.getElementById("msg")
    element.innerHTML = "Hello <tag-component [input]=\"xyz\"></tag-component> how are you doing?"
}
函数(标记:字符串){
const str=tag.slice(1);//从字符串中删除
document.getElementById(“msg”)
element.innerHTML=“你好,最近怎么样?”
}
输出

据我所知,这:
“你好吗?”
是不可能的,因为angular无法通过innerHTML识别角度组件标记

可以通过其他方式实现此功能,如使用自定义指令:

遵循自定义directve的代码:

@Directive({
  selector: "[myDirective]"
})
export class MyDirective implements OnInit {
  @Input() tag: string;

  constructor(private el: ElementRef, private renderer: Renderer2) {}

  ngOnInit() {
    this.renderer.setProperty(
      this.el.nativeElement,
      "innerHTML",
      `<h1>your tage here --> ${this.tag}</h1>`
    );
  }
}

@指令({
选择器:“[myDirective]”
})
导出类MyDirective实现OnInit{
@Input()标记:string;
构造函数(私有el:ElementRef,私有呈现器:Renderer2){}
恩戈尼尼特(){
this.renderer.setProperty(
这个国家元素,
“innerHTML”,
`你的标签在这里-->${this.tag}`
);
}
}

您可以在组件模板中使用它作为:
来呈现预期的标记。

如果有多个#标记怎么办?