Com*_*ode 14 typescript angular2-directives angular2-template angular2-routing angular
我有时会有一个可以接收这样的文本的组件:
文本www.website.com
但是如果它是一个链接我想将它转换为url.像这样.
tuo*_*alo 15
使用简单的正则表达式来修改HTML内容存在许多问题.
这是一种使用linkifyjs模块的方法,您需要使用它npm install.请注意输入被视为纯文本,而输出是HTML文本.
import { Pipe, PipeTransform } from '@angular/core';
import linkifyStr from 'linkifyjs/string';
@Pipe({name: 'linkify'})
export class LinkifyPipe implements PipeTransform {
transform(str: string): string {
return str ? linkifyStr(str, {target: '_system'}) : str;
}
}
Run Code Online (Sandbox Code Playgroud)
注意:如果您需要指定target属性,请添加例如.{target: '_system'}作为第二个参数linkifyStr.
小智 9
好吧,为了制作一个管道,你可以制作一个由.组成的管道组件
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'linkify'})
export class LinkifyPipe implements PipeTransform {
transform(link: string): string {
return this.linkify(link);
}
private linkify(plainText): string{
let replacedText;
let replacePattern1;
let replacePattern2;
let replacePattern3;
//URLs starting with http://, https://, or ftp://
replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
replacedText = plainText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>');
//URLs starting with "www." (without // before it, or it'd re-link the ones done above).
replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim;
replacedText = replacedText.replace(replacePattern2, '$1<a href="http://$2" target="_blank">$2</a>');
//Change email addresses to mailto:: links.
replacePattern3 = /(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim;
replacedText = replacedText.replace(replacePattern3, '<a href="mailto:$1">$1</a>');
return replacedText;
}
}
Run Code Online (Sandbox Code Playgroud)
然后导入这个像你将指令,传递给
pipes: [LinkifyPipe]
Run Code Online (Sandbox Code Playgroud)
并插入这样的
{{url | linkify}}
Run Code Online (Sandbox Code Playgroud)
你应该检查 angular-linky https://github.com/dzonatan/angular-linky
<span [innerHTML]="yourText | linky"></span>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15905 次 |
| 最近记录: |