Angular2 Möglichkeit der Umwandlung von text zu url (Anker links)
Manchmal habe ich eine Komponente, die text empfangen kann, wie:
text www.website.com
Aber ich möchte um konvertieren zu einer url, wenn es ein link ist. Wie diese.
text www.website.com
Lese ich diese SO beantworten, die nahelegt, dass mit 3rd-party-libs wie anchorme. Ist es anywway zu tun, es angular2 Weg?
Was ist das problem mit diesem?
InformationsquelleAutor commonSenseCode | 2016-09-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zahlreiche Probleme bei der Verwendung von einfachen regexes zu ändern von HTML-Inhalten.
Hier ist ein Ansatz, verwendet die linkifyjs module, die Sie brauchen, um
npm install
. Tun beachten Sie, dass die Eingabe als Klartext, während die Ausgabe ist HTML-text.NB: Wenn Sie angeben müssen, die
target
Attribute hinzufügen, zB.{target: '_system'}
als zweiter parameterlinkifyStr
.ich denke, wir müssen bind Ergebnis innerHtml, wenn wir über Angular2 `` <div [innerHTML]="Nachricht | linkify "></div> ``
Sie können importieren Sie die lib so:
var linkifyString = require('linkifyjs/string');
und verwenden Sie in der gleichen Weise, ohne Typoskript unterstützen.Es funktionierte nicht für mich auf den ersten, habe ich immer auf Empfang
string_1.default is not a function
Fehler. Schließlich habe ich herausgefunden, dass das ändern der import-Anweisung zuimport * as linkifyString from 'linkifyjs/string';
ist das Problem behoben!InformationsquelleAutor tuomassalo
Okay so, um ein Rohr, man würde eine pipe-Komponente bestehend aus
importieren Sie diese wie u würde eine Richtlinie, übergeben es an die
und interpoliert werden, wie dies
stackoverflow.com/questions/3103962/... es gibt einen JavaScript-DOMParser, konvertieren von HTML in JavaScript. Ich lief in genau dieses Problem vor kurzem, und Sie nicht betrügen kann ein dom-element mit strings
Danke @Mark Acosta schon gemacht
ich denke, wir müssen bind Ergebnis innerHtml, wenn wir über Angular2 `` <div [innerHTML]="Nachricht | linkify "></div> ``
Zu Beginn des linkify () - Funktion hinzufügen:
plainText = plainText.replace("<", "<").replace(">",">");
zu stoppen-injection-versuche und Beschwerden in der Konsole, weil die. Dann bind verwenden innerHTML als Amr erwähntInformationsquelleAutor Mark Acosta
sollten Sie verwenden Sie diese pipe, auf diese Weise:
<div [innerHtml]="note.title | linkify"></div>
InformationsquelleAutor Coşkun Deniz
Sollten Sie überprüfen, eckig-linky https://github.com/dzonatan/angular-linky
InformationsquelleAutor Doua Beri
Habe ich gesucht nach einer Lösung aber ohne Erfolg. Ich brauchte nach Umfang der Anforderung zu verarbeiten Winkel-routing [routerLink] und externe links mit [innerHTML], ohne die Notwendigkeit für 3rd-party-libs.
Meine Lösung (Zusammenfassung):
Winkel 2, Gewinkelt 5 - Benutzer-klicken Sie auf events/event-handling für dynamische [innerHTML] generated content mit Hilfe von pipe und der Richtlinie zu generieren und zu konvertieren plain text, klicken Sie auf e-urls.g #hashtags, @Handle, @Mention, #routerLink #href #mailto etc
Plunker demo:
https://embed.plnkr.co/68lZFY/
AppComponent
Richtlinie
Rohr
InformationsquelleAutor Elroy
Ok das ist, wie ich es verlassen Antwort hoffe das es jemandem hilft:
So, ich bin mit einer Funktion zu linkify meine Klage, text
Aber diese gibt einen string mit html-Codierung, so dass, wenn ich mit
<p>{{example}}</p>
wird es wieder voll Codierung (mit Anker-tags und html).Also ich benutze jetzt angular2 eingebauten html-Bindung:
Das gibt mir die Lösung
Funktionen und Rohre sind im wesentlichen die gleichen. Das Rohr wird modularer und sauberer jedoch
hey @MarkAcosta wenn Sie möchten, fügen Sie Sie als eine Antwort auf Ihre willkommen, akzeptiere ich Ihre Antwort, sobald seine Arbeit
InformationsquelleAutor commonSenseCode