¿Hay alguna forma de limitar la longitud de la cadena a un número de caracteres? por ejemplo: tengo que limitar la longitud de un título a 20 {{ data.title }}
.
¿Hay alguna tubería o filtro para limitar la longitud?
¿Hay alguna forma de limitar la longitud de la cadena a un número de caracteres? por ejemplo: tengo que limitar la longitud de un título a 20 {{ data.title }}
.
¿Hay alguna tubería o filtro para limitar la longitud?
Dos formas de truncar el texto en angular.
let str = 'How to truncate text in angular';
1. Solución
{{str | slice:0:6}}
Salida:
how to
Si desea agregar texto después de la cadena de corte como
{{ (str.length>6)? (str | slice:0:6)+'..':(str) }}
Salida:
how to...
2. Solución (crear tubería personalizada)
si desea crear una tubería truncada personalizada
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;
}
}
En marcado
{{ str | truncate:[20] }} // or
{{ str | truncate:[20, '...'] }} // or
No olvide agregar una 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
debería sertransform(value: string, args: any[]): string
ya que el primer argumento dado a la tubería es un número.Truncar tubería con parámetros opcionales :
-
No olvide agregar una entrada de módulo.
Uso
Cadena de ejemplo:
Margen:
fuente
limit = value.substr(0, 13).lastIndexOf(' ');
debería serlolimit = value.substr(0, limit).lastIndexOf(' ');
.if (!value) { return ''; }
yif (value.length <= limit) { return value; }
${value.substr(0, limit)}${ellipsis}
; } `Puede truncar texto basado en CSS. Ayuda a truncar un texto basado en el ancho, no en un carácter fijo.
Ejemplo
CSS
HTML
Nota: este código se usa completo para una línea, no para más de una.
La solución de Ketan es la mejor si quieres hacerlo por Angular
fuente
He estado usando este módulo ng2 truncate , es bastante fácil, importa el módulo y estás listo para comenzar ... en {{data.title | truncar: 20}}
fuente
Aquí hay un enfoque alternativo que usa un
interface
para describir la forma de un objeto de opciones que se pasará a través delpipe
en el marcado.Luego, en tu marcado:
fuente
Muy simple usando la tubería de corte (tubería central de angular), como solicitó
data.title
:De los documentos comunes de Angular https://angular.io/api/common/SlicePipe
fuente
Si desea truncar por varias palabras y agregar puntos suspensivos, puede usar esta función:
Ejemplo:
extraído de: https://github.com/yellowspot/ng2-truncate/blob/master/src/truncate-words.pipe.ts
Si desea truncar por varias letras pero no corte palabras, use esto:
Ejemplo:
fuente
Acabo de probar la respuesta de @Timothy Perez y agregué una línea
a
fuente
Pruebe este, si desea truncar basándose en palabras en lugar de caracteres y al mismo tiempo permitir una opción para ver el texto completo.
Vine aquí buscando una solución Leer más basada en palabras , compartiendo la costumbre que
Pipe
terminé escribiendo.Tubo:
En plantilla:
Componente:
En módulo:
fuente