Carlos Cifuentes
Referencia AngularJS → Angular

$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