Я пытался создать трубку для замены определенных символов в сообщении, это код для канала:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'replace'})
export class ReplacePipe implements PipeTransform {
transform(value: string): string {
console.log(value);
let newValue = value.replace(/\n/g, '<br>');
console.log(newValue);
return '${newValue}';
}
}
Я использую его на странице следующим образом:
<ion-card-content [innerHtml]="message | linky | replace"></ion-card-content>
Проблема: она работает, когда оператор replace выглядит примерно так:
let newValue = value.replace('bit', '<br>');
Но это не делает ничего, когда это выглядит так: (Мне нужно заставить его работать для этого)
let newValue = value.replace(/\n/g, '<br>');
Я не могу понять, где я ошибаюсь.
Я был в состоянии получить его работу, поставив <br>
в double quotes
и добавить дополнительный \
к \n
. Я не знаю, зачем мне это нужно, чтобы он работал, но теперь он отлично работает. Вот решение:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'replace'})
export class ReplacePipe implements PipeTransform {
transform(value: string): string {
console.log(value);
if(value) {
let newValue = value.replace(/\\n/g, "<br>").replace(/&/g, "&");
console.log(newValue);
return '${newValue}';
}
}
}
Я тоже возвращался к линии, но просто понял, что вы можете легко отобразить этот прыжок с помощью css. { white-space: pre; }
Вы уверены, что символ \n
находится в вашей строке? Вероятно, это строка. Попробуйте: let newValue = value.replace(/\\n/g, '<br>');
Причина, по которой вам нужно, - это то, что ваша строка действует со ссылкой на "\n"
а не на символ newline
. В регулярном выражении \n
является символом новой строки, а \\n
- "\n"
качестве строки.
Когда вы говорите, что это не работает, это означает, что console.log(newValue) выводит как "что-то" или "что-то", а не "что-то"
что-то "? Есть ли сообщение об ошибке?
Я просто взял ваш точный код и протестировал его здесь, и он сработал.
var value = "asd \n more stuff";
console.log(value)
let newValue = value.replace(/\n/g, '<br>');
console.log(newValue)