Estoy buscando una solución para cambiar el valor de todas las cadenas en mi aplicación similar a una internacionalización/localización.
Mis cadenas siguen un patrón específico como este:
let sample = "[someID]"Entonces uso la cadena como esta:
<h5>Sample:</h5> <h5>{{sample}}</h5>Y el resultado debería verse así:
Muestra:
Resultado para la identificación
Las posibles soluciones podrían ser etiquetar la cadena con algún carácter especial similar a la localización en Angular con "$localize", pero seguido de una función personalizada para encontrar el valor correcto para la ID dada.
Traté de manipular el tipo de cadena primitivo pero, que yo sepa, no hay forma de cambiar el captador predeterminado para el tipo de cadena. La única forma es extender el prototipo de cadena mediante una función personalizada, pero luego el uso se vería así:
<h5>Sample:</h5> <h5>{{sample.customMethod()}}</h5>Esto resultaría en mucho trabajo porque necesito cambiar todas las propiedades de cadena utilizadas actualmente de esta manera.
Tal vez haya algún tipo de forma de cambiar el valor de la cadena mientras se compila o algo así. Como obtener/establecer un valor de visualización o aplicar algún tipo de filtro globalmente.
¿Ha considerado usar un BehaviourSubject en un servicio? De esa manera, podría emitir el valor actualizado a toda la aplicación a través de .next('newValue')
miServicio.ts:
globalSample:BehaviourSubject = new BehaviourSubject<string>('default') globalSample$ = globalSample.asObservable(); updateSample(newValue:string){ this.globalSample.next(newValue); }La variable de muestra en lugar de una cadena sería un Observable y podría usarla en la plantilla con una canalización asíncrona como:
componente.ts:
export class myComponent { sample:Observable<string> = myService.globalSample$ constructor(myService:MyService){} }componente.html:
<h5>Sample:</h5> <h5>{{sample | async }}</h5>