Czy istnieje sposób, żebym mógł ograniczyć długość ciągu do znaków liczbowych? na przykład: muszę ograniczyć długość tytułu do 20 {{ data.title }}
.
Czy jest jakaś rura lub filtr ograniczający długość?
Czy istnieje sposób, żebym mógł ograniczyć długość ciągu do znaków liczbowych? na przykład: muszę ograniczyć długość tytułu do 20 {{ data.title }}
.
Czy jest jakaś rura lub filtr ograniczający długość?
Dwa sposoby przycinania tekstu do postaci kanciastej.
let str = 'How to truncate text in angular';
1. Rozwiązanie
{{str | slice:0:6}}
Wynik:
how to
Jeśli chcesz dołączyć dowolny tekst po ciągu kawałka, np
{{ (str.length>6)? (str | slice:0:6)+'..':(str) }}
Wynik:
how to...
2. Rozwiązanie (utwórz niestandardową rurę)
jeśli chcesz utworzyć niestandardowy obcinany potok
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;
}
}
W znacznikach
{{ str | truncate:[20] }} // or
{{ str | truncate:[20, '...'] }} // or
Nie zapomnij dodać wpisu do modułu.
@NgModule({
declarations: [
TruncatePipe
]
})
export class AppModule {}
return value && value.length > limit ? value.substring(0, limit) + trail : value;
transform(value: string, args: string[]): string
powinno być,transform(value: string, args: any[]): string
ponieważ pierwszym argumentem podanym do potoku jest liczba.Obetnij rurę z opcjonalnymi parametrami :
-
Nie zapomnij dodać wpisu do modułu.
Stosowanie
Przykładowy ciąg:
Narzut:
źródło
limit = value.substr(0, 13).lastIndexOf(' ');
powinno byćlimit = value.substr(0, limit).lastIndexOf(' ');
.if (!value) { return ''; }
iif (value.length <= limit) { return value; }
${value.substr(0, limit)}${ellipsis}
; } `Możesz obcinać tekst na podstawie CSS. Pomaga obcięcie tekstu w oparciu o szerokość, a nie ustalenie znaku.
Przykład
CSS
HTML
Uwaga: ten kod używa pełnego dla jednej linii, nie więcej niż jednego.
Rozwiązanie Ketan jest najlepsze, jeśli chcesz to zrobić przez Angular
źródło
Używam tego modułu ng2 truncate , jest to całkiem łatwy moduł importu i jesteś gotowy do pracy ... w {{data.title | obcięcie: 20}}
źródło
Oto alternatywne podejście
interface
do opisania kształtu obiektu opcji, który ma zostać przekazany za pośrednictwempipe
znacznika.Następnie w swoim znaczniku:
źródło
Bardzo proste użycie rurki tnącej (rura rdzeniowa kątowa), zgodnie z zapytaniem
data.title
:Z popularnych dokumentów Angular https://angular.io/api/common/SlicePipe
źródło
Jeśli chcesz skrócić o kilka słów i dodać wielokropek, możesz użyć tej funkcji:
Przykład:
zaczerpnięte z: https://github.com/yellowspot/ng2-truncate/blob/master/src/truncate-words.pipe.ts
Jeśli chcesz skrócić o kilka liter, ale nie wycinaj słów, użyj tego:
Przykład:
źródło
Właśnie wypróbowałem odpowiedź @Timothy Perez i dodałem linię
do
źródło
Spróbuj tego, jeśli chcesz obcinać na podstawie słów zamiast znaków, jednocześnie umożliwiając wyświetlenie całego tekstu.
Przyszedłem tutaj, szukając rozwiązania Czytaj więcej w oparciu o słowa , dzieląc się niestandardowym
Pipe
, który napisałem.Rura:
W szablonie:
Składnik:
W module:
źródło