Вам не нужно подробно разбираться и писать все это самостоятельно.
Другие люди уже решили эту проблему, например, проект LinkifyJS.
Существует угловая совместимая оболочкадля него:
Который, после того как вы выполнили стандартный процесс настройки, вы можете использовать его в качестве канала:
<span [innerHTML]="'Linkify the following URL: https://github.com/anthonynahas/ngx-linkifyjs and share it <3' | linkify"></span>
Или как услуга:
import {NgxLinkifyjsService, Link, LinkType, NgxLinkifyOptions} from 'ngx-linkifyjs';
constructor(public linkifyService: NgxLinkifyjsService) {
const options: NgxLinkifyOptions =
{
className: 'linkifiedYES',
target : {
url : '_self'
}
};
this.linkifyService.linkify('For help with GitHub.com, please email support@github.com');
// result 1 --> see below
this.linkifyService.linkify('For help with GitHub.com, please email support@github.com', options);
// result 2 --> see below
}
}