giải pháp css hoạt động, tuy nhiên bạn không thực sự kiểm soát được kiểu dáng. Trong trường hợp của tôi, tôi muốn có thêm một chút không gian sau khi ngắt dòng. Đây là một lệnh tôi đã tạo để xử lý việc này (bản đánh máy):
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);
Sử dụng:
<div class="pre">{{item.description}}</div>
Tất cả những gì nó làm là kết thúc từng phần của văn bản vào một <p>
thẻ. Sau đó, bạn có thể tạo kiểu theo cách bạn muốn.