Есть ли способ ограничить длину строки числовыми символами? например: я должен ограничить длину заголовка до 20 {{ data.title }}
.
Есть ли труба или фильтр для ограничения длины?
Есть ли способ ограничить длину строки числовыми символами? например: я должен ограничить длину заголовка до 20 {{ data.title }}
.
Есть ли труба или фильтр для ограничения длины?
Два способа усечь текст до углового.
let str = 'How to truncate text in angular';
1. Решение
{{str | slice:0:6}}
Вывод:
how to
Если вы хотите добавить любой текст после строки среза, например
{{ (str.length>6)? (str | slice:0:6)+'..':(str) }}
Вывод:
how to...
2. Решение (создать собственный канал)
если вы хотите создать собственный канал усечения
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'truncate'
})
export class TruncatePipe implements PipeTransform {
transform(value: string, args: any[]): string {
const limit = args.length > 0 ? parseInt(args[0], 10) : 20;
const trail = args.length > 1 ? args[1] : '...';
return value.length > limit ? value.substring(0, limit) + trail : value;
}
}
В разметке
{{ str | truncate:[20] }} // or
{{ str | truncate:[20, '...'] }} // or
Не забудьте добавить запись модуля.
@NgModule({
declarations: [
TruncatePipe
]
})
export class AppModule {}
return value && value.length > limit ? value.substring(0, limit) + trail : value;
transform(value: string, args: string[]): string
должно быть,transform(value: string, args: any[]): string
поскольку первым аргументом, передаваемым каналу, является число.Усечь трубу с дополнительным параметрами:
-
Не забудьте добавить запись модуля.
использование
Пример строки:
Разметка:
источник
limit = value.substr(0, 13).lastIndexOf(' ');
должно бытьlimit = value.substr(0, limit).lastIndexOf(' ');
.if (!value) { return ''; }
иif (value.length <= limit) { return value; }
${value.substr(0, limit)}${ellipsis}
; } `Вы можете обрезать текст на основе CSS. Это помогает обрезать текст на основе ширины, а не фиксированного символа.
пример
CSS
HTML
Примечание: этот код используется для одной строки, а не более чем для одной.
Решение Ketan лучше всего, если вы хотите сделать это с помощью Angular
источник
Я использовал этот модуль ng2 truncate , его довольно простой модуль импорта, и вы готовы к работе ... в {{data.title | truncate: 20}}
источник
Вот альтернативный подход, использующий
interface
для описания формы объекта параметров, передаваемого черезpipe
в разметке.Затем в вашей разметке:
источник
Очень просто использовать slice pipe (основная труба angular), как вы просили
data.title
:Из общих документов Angular https://angular.io/api/common/SlicePipe
источник
Если вы хотите усечь на несколько слов и добавить многоточие, вы можете использовать эту функцию:
Пример:
взято из: https://github.com/yellowspot/ng2-truncate/blob/master/src/truncate-words.pipe.ts
Если вы хотите обрезать по количеству букв, но не вырезать слова, используйте это:
Пример:
источник
Просто попробовал ответить @Timothy Perez и добавил строку
в
источник
Попробуйте это, если вы хотите обрезать на основе слов, а не символов, при этом также позволяя видеть полный текст.
Пришел сюда в поисках решения Read More, основанного на словах , поделившись тем, что
Pipe
я написал.Труба:
В шаблоне:
Составная часть:
В модуле:
источник