Угловая труба: невозможно заменить / n

1

Я пытался создать трубку для замены определенных символов в сообщении, это код для канала:

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>');

Я не могу понять, где я ошибаюсь.

Теги:
angular
ionic-framework
ionic2

4 ответа

0
Лучший ответ

Я был в состоянии получить его работу, поставив <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, "&amp;");
    console.log(newValue);
    return '${newValue}';
  }
  }
}
0

Я тоже возвращался к линии, но просто понял, что вы можете легко отобразить этот прыжок с помощью css. { white-space: pre; }

0

Вы уверены, что символ \n находится в вашей строке? Вероятно, это строка. Попробуйте: let newValue = value.replace(/\\n/g, '<br>'); Причина, по которой вам нужно, - это то, что ваша строка действует со ссылкой на "\n" а не на символ newline. В регулярном выражении \n является символом новой строки, а \\n - "\n" качестве строки.

  • 0
    Это там, я просто получил его на работу и выложил решение! Спасибо !
  • 1
    Смотрите мое редактирование для объяснения
Показать ещё 1 комментарий
0

Когда вы говорите, что это не работает, это означает, что console.log(newValue) выводит как "что-то" или "что-то", а не "что-то"
что-то "? Есть ли сообщение об ошибке?

Я просто взял ваш точный код и протестировал его здесь, и он сработал.

var value = "asd \n more stuff";
console.log(value)
let newValue = value.replace(/\n/g, '<br>');
console.log(newValue)
  • 0
    Console.log print "" что-то \ n что-то "Нет сообщения об ошибке. Но я понял, опубликовав решение в течение нескольких минут

Ещё вопросы

Сообщество Overcoder
Наверх
Меню