โซลูชัน css ใช้งานได้ แต่คุณไม่สามารถควบคุมการออกแบบได้ ในกรณีของฉันฉันต้องการพื้นที่เพิ่มอีกเล็กน้อยหลังจากแบ่งบรรทัด นี่เป็นคำสั่งที่ฉันสร้างขึ้นเพื่อจัดการกับสิ่งนี้ (typescript):
function preDirective(): angular.IDirective {
return {
restrict: 'C',
priority: 450,
link: (scope, el, attr, ctrl) => {
scope.$watch(
() => el[0].innerHTML,
(newVal) => {
let lineBreakIndex = newVal.indexOf('\n');
if (lineBreakIndex > -1 && lineBreakIndex !== newVal.length - 1 && newVal.substr(lineBreakIndex + 1, 4) != '</p>') {
let newHtml = `<p>${replaceAll(el[0].innerHTML, '\n\n', '\n').split('\n').join('</p><p>')}</p>`;
el[0].innerHTML = newHtml;
}
}
)
}
};
function replaceAll(str, find, replace) {
return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
}
function escapeRegExp(str) {
return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}
}
angular.module('app').directive('pre', preDirective);
ใช้:
<div class="pre">{{item.description}}</div>
สิ่งที่มันทำคือห่อข้อความแต่ละส่วนเข้าไปใน<p>
แท็ก หลังจากนั้นคุณสามารถจัดสไตล์ได้ตามที่คุณต้องการ