2017-06-06 68 views
1

我一直在努力使管道中的消息來代替某些字符,這是管道中的代碼:我使用它像這樣在頁面上角管:不能替換/ N

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

我似乎無法弄清楚我哪裏出錯了。

+0

不,我沒有什麼我會檢查什麼? – DN0300

+0

你確定'linky'不在中間搞亂? – codeSetter

+0

不,我得到它的工作。我在 – DN0300

回答

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

當你說它不起作用是否意味着console.log(newValue)輸出爲「something \ n something」而不是「something
something」?是否有任何錯誤信息?

我剛剛把你的確切代碼和測試它here它的工作。

var value = "asd \n more stuff"; 
console.log(value) 
let newValue = value.replace(/\n/g, '<br>'); 
console.log(newValue) 
+0

Console.log打印「」東西\ n東西「沒有錯誤信息,但我覺得它在幾分鐘內發佈解決方案 – DN0300

0

您確定\n字符在您的字符串中嗎?這可能是一個字符串。試試這個:let newValue = value.replace(/\\n/g, '<br>');你需要的原因是因爲你的字符串實際上是"\n"而不是newline字符。在正則表達式中,\n是換行符,\\n"\n"作爲字符串。

+0

它在那裏,我剛剛得到它的工作和發佈解決方案!謝謝! – DN0300

+1

看到我的編輯的解釋 –

+0

謝謝你的解釋,這有很大的幫助。 – DN0300

0

我正在處理回行方式也只是想通了,你可以很容易地顯示這些線與CSS的跳躍。 { white-space: pre; }