$interpolateProvider / $interpolate en Angular moderno
Los símbolos de interpolación personalizados ya no hacen falta, y $interpolate no tiene equivalente en tiempo de ejecución. Los templates usan {{ }} y los strings se arman en TypeScript.
Antes · AngularJS
app.config(function ($interpolateProvider) {
$interpolateProvider.startSymbol('[[').endSymbol(']]');
});
<p>[[ vm.user.name ]]</p>
// in a controller
var greet = $interpolate('Hello {{name}}, you have {{count}} messages');
vm.text = greet({ name: user.name, count: 3 });Después · Angular@Component({
selector: 'app-greeting',
template: `<p>{{ text() }}</p>`,
})
export class GreetingComponent {
user = input.required<User>();
count = input(0);
text = computed(
() => `Hello ${this.user().name}, you have ${this.count()} messages`,
);
}Qué cambia
- Símbolos como [[ ]] existían para evitar el choque con motores de templates del servidor; los templates de Angular se compilan en el build y nunca pasan por el motor del servidor.
- $interpolate(texto)(contexto) pasa a ser un template literal, normalmente dentro de un computed.
- El formato que vivía dentro del string interpolado pasa a pipes en el template.
Consejo de migración. Busca las llamadas a $interpolate y $compile cuyo texto viene del backend o de archivos de traducción. Esos son templates en tiempo de ejecución, y cada uno necesita una decisión: una librería de traducción con parámetros, o un componente fijo.
Relacionado
¿Planeas una migración o una plataforma de microfrontends?
En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.
Escríbeme por LinkedIn