Existe uma maneira de limitar o comprimento da string a um número de caracteres? por exemplo: eu tenho que limitar o tamanho do título a 20 {{ data.title }}
.
Existe algum tubo ou filtro para limitar o comprimento?
Existe uma maneira de limitar o comprimento da string a um número de caracteres? por exemplo: eu tenho que limitar o tamanho do título a 20 {{ data.title }}
.
Existe algum tubo ou filtro para limitar o comprimento?
Bidirecional para truncar texto em angular.
let str = 'How to truncate text in angular';
1. Solução
{{str | slice:0:6}}
Resultado:
how to
Se você deseja anexar qualquer texto após a sequência de fatias, como
{{ (str.length>6)? (str | slice:0:6)+'..':(str) }}
Resultado:
how to...
2. Solução (criar canal personalizado)
se você deseja criar um tubo truncado personalizado
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;
}
}
Na marcação
{{ str | truncate:[20] }} // or
{{ str | truncate:[20, '...'] }} // or
Não esqueça de adicionar uma entrada de módulo.
@NgModule({
declarations: [
TruncatePipe
]
})
export class AppModule {}
return value && value.length > limit ? value.substring(0, limit) + trail : value;
transform(value: string, args: string[]): string
deve sertransform(value: string, args: any[]): string
porque o primeiro argumento dado ao tubo é um número.Truncar tubulação com parâmetros opcionais :
-
Não esqueça de adicionar uma entrada de módulo.
Uso
Sequência de exemplo:
Marcação:
fonte
limit = value.substr(0, 13).lastIndexOf(' ');
deve serlimit = value.substr(0, limit).lastIndexOf(' ');
embora.if (!value) { return ''; }
eif (value.length <= limit) { return value; }
${value.substr(0, limit)}${ellipsis}
; } `Você pode truncar o texto com base em CSS. Isso ajuda a truncar um caractere com base na largura e não na correção de texto.
Exemplo
CSS
HTML
Nota: este código é usado completo para uma linha e não para mais de uma.
A solução da Ketan é melhor se você quiser fazê-lo pela Angular
fonte
Eu tenho usado este módulo ng2 truncado , é muito fácil, módulo de importação e você está pronto para ir ... in {{data.title | truncar: 20}}
fonte
Aqui está uma abordagem alternativa usando um
interface
para descrever a forma de um objeto de opções a ser passado por meiopipe
da marcação.Em seguida, na sua marcação:
fonte
Muito simples usando o tubo de fatia (tubo de núcleo da angular), como você pediu
data.title
:Dos documentos comuns do Angular https://angular.io/api/common/SlicePipe
fonte
Se você deseja truncar por várias palavras e adicionar reticências, pode usar esta função:
Exemplo:
extraído de: https://github.com/yellowspot/ng2-truncate/blob/master/src/truncate-words.pipe.ts
Se você deseja truncar por um número de letras, mas não recortar palavras, use o seguinte:
Exemplo:
fonte
Tentei a resposta @ Timothy Perez e adicionei uma linha
para
fonte
Experimente este, se você deseja truncar com base em Palavras, em vez de caracteres, enquanto também permite uma opção para ver o texto completo.
Vi aqui procurando uma solução Leia Mais baseada em palavras , compartilhando o costume
Pipe
que acabei escrevendo.Tubo:
No modelo:
Componente:
No módulo:
fonte