En Angular, el esquema CUSTOM_ELEMENTS_SCHEMA
permite a la aplicación reconocer y usar elementos HTML personalizados (custom elements) que no están definidos en el propio componente ni en Angular. Este esquema es útil cuando trabajamos con Web Components o librerías externas que introducen nuevos elementos HTML que Angular no reconoce de forma nativa.
CUSTOM_ELEMENTS_SCHEMA
?
Por defecto, Angular valida todos los elementos HTML usados en los templates para asegurarse de que son elementos conocidos y propios de Angular o HTML estándar. Si Angular encuentra un elemento desconocido (por ejemplo, <mi-elemento-personalizado>
), lanzará un error de compilación indicando que el elemento no es reconocido.
CUSTOM_ELEMENTS_SCHEMA
indica a Angular que puede ignorar estos elementos personalizados, evitando los errores de compilación y permitiendo que se rendericen en la aplicación.
CUSTOM_ELEMENTS_SCHEMA
Para permitir el uso de elementos personalizados en un módulo Angular, debes incluir CUSTOM_ELEMENTS_SCHEMA
en la propiedad schemas
del decorador @NgModule
del módulo en el que se utilizarán los elementos personalizados. A continuación, se muestra cómo hacerlo:
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA], // Permitir elementos personalizados
bootstrap: [AppComponent]
})
export class AppModule { }
Supongamos que has importado un Web Component llamado <mi-componente>
en tu aplicación Angular y quieres usarlo en un template de algún componente:
<!-- Template de un componente en Angular -->
<mi-componente></mi-componente>
Sin CUSTOM_ELEMENTS_SCHEMA
, Angular mostraría un error como "‘mi-componente’ is not a known element" (mi-componente no es un elemento conocido). Al añadir CUSTOM_ELEMENTS_SCHEMA
en el módulo, Angular ignorará este error y permitirá que <mi-componente>
se use sin problemas.
CUSTOM_ELEMENTS_SCHEMA
puede tener un pequeño impacto en el rendimiento, ya que Angular ya no valida estos elementos personalizados.
CUSTOM_ELEMENTS_SCHEMA
en Angular es fundamental para integrar elementos personalizados sin que Angular los marque como errores, y permite trabajar con Web Components y otros elementos externos en las aplicaciones. Para más información, revisa la documentación oficial de Angular sobre CUSTOM_ELEMENTS_SCHEMA.
Jorge García
Fullstack developer