Javascript 在[innerhtml]中使用angular(ionic)绑定(单击)以表示提及@或哈希标记#

Javascript 在[innerhtml]中使用angular(ionic)绑定(单击)以表示提及@或哈希标记#,javascript,angular,ionic-framework,Javascript,Angular,Ionic Framework,Hi尝试通过友好方式添加链接到用户提交的文本的某些部分,如: submitText = '#test @mention http://google.com' 呈现html: [innerHTML]="submitText | dynamiccontent" 但渲染后的结果是: #测试@提及 但是(点击)=“goToPost($2)”是打印的,不由angular处理 <span class="font-bold" (click)="goToPost(test)">#test&l

Hi尝试通过友好方式添加链接到用户提交的文本的某些部分,如:

  submitText = '#test @mention http://google.com'
呈现html:

[innerHTML]="submitText | dynamiccontent"
但渲染后的结果是: #测试@提及 但是(点击)=“goToPost($2)”是打印的,不由angular处理

<span class="font-bold" (click)="goToPost(test)">#test</span>
#测试
目标是: 如果#找到(单击)=“goToPost($2)”如果@found(单击)=“goToProfile($2)”

这是管道动态内容

import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl} from '@angular/platform-browser';

@Pipe({ name: 'dynamiccontent' })

export class DynamicContentPipe implements PipeTransform {
    constructor(private sanitizer: DomSanitizer) {}

    urls: any = /(\b(https?|http|ftp|ftps|Https|rtsp|Rtsp):\/\/[A-Z0-9+&@#\/%?=~_|!:,.;-]*[-A-Z0-9+&@#\/%=~_|])/gim; // Find/Replace URL's in text  
    hashtags: any = /(^|\s)(#[a-z\d][\w-]*)/ig; // Find/Replace #hashtags in text   
    mentions: any = /(^|\s)(@[a-z\d][\w-]*)/ig; // Find/Replace @Handle/Mentions in text    
    emails: any = /(\S+@\S+\.\S+)/gim; // Find/Replace email addresses in text

    transform(text) {
        return this.sanitizer.bypassSecurityTrustHtml(this.parseUrl(text));
    }

    private parseUrl(text: string) {
        // Find/Replace URL's in text
        if (text.match(this.urls)) {
                text = text.replace(this.urls, function replacer($1, $2, $3) {
                        let url: any = $1;
                        let urlClean: any = url.replace("" + $3 + "://", "");

                        return "<a class=\"font-bold noline\" href=\"" + url + "\" target=\"_blank\">" + url + "</a>";
                });
        }

        // Find/Replace @Handle/Mentions in text
        if (text.match(this.hashtags)) {
            text = text.replace(this.hashtags, "<span class=\"font-bold \" (click)=\"goToPost($2)\">$1$2</span>");
        }

        // Find/Replace #hashtags in text
        if (text.match(this.mentions)) {
            text = text.replace(this.mentions, "<a class=\"font-bold noline\" href=\"/search/handle/$2\" >$1$2</a>");
        }

        // Find/Replace email addresses in text
        //if (text.match(this.emails)) {
        //        text = text.replace(this.emails, "<a href=\"mailto:$1\">$1</a>");
        //}


        return text;
    }  
}
从'@angular/core'导入{Pipe,PipeTransform};
从“@angular/platform browser”导入{domsanizer,SafeHtml,SafeStyle,SafeScript,SafeUrl,SafeResourceUrl};
@管道({name:'dynamiccontent'})
导出类DynamicContentPipe实现PipeTransform{
构造函数(私有sanitizer:DomSanitizer){}
URL:any=/(\b(https?| http | ftp | ftps | https | rtsp | rtsp):\/\/[A-Z0-9+&@\/%?=~|!:,.-]*[-A-Z0-9+&\/%=~|]/gim;//在文本中查找/替换URL
hashtags:any=/(^ |\s)(#[a-z\d][\w-]*)/ig;//在文本中查找/替换#hashtags
提及:any=/(^ |\s)(@[a-z\d][\w-]*)/ig;//在文本中查找/替换@Handle/提及
电子邮件:any=/(\S+@\S+\.\S+)/gim;//在文本中查找/替换电子邮件地址
转换(文本){
返回this.sanitizer.bypassSecurityTrustHtml(this.parseUrl(文本));
}
专用解析URL(文本:字符串){
//在文本中查找/替换URL
if(text.match(this.url)){
text=text.replace(this.url,函数replacer($1,$2,$3){
让url:any=$1;
让urlClean:any=url.replace(“+$3+”:/”,“”);
返回“”;
});
}
//在文本中查找/替换@Handle/提及
if(text.match(this.hashtags)){
text=text.replace(this.hashtags,“$1$2”);
}
//查找/替换文本中的哈希标记
if(text.match(this.references)){
text=text.replace(this.references,“”);
}
//在文本中查找/替换电子邮件地址
//if(text.match(this.email)){
//text=text.replace(this.emails,“”);
//}
返回文本;
}  
}