Enciclopédia de Erros

Hydration Unsupported Projection of DOM Nodes

Este erro significa que durante o processo de serialização do lado do servidor, o Angular encontrou nodes que foram criados fora do contexto do Angular (ou seja, usando APIs DOM nativas) e descobriu que esses nodes foram fornecidos como nodes projetáveis. Eles provavelmente foram fornecidos usando as APIs ViewContainerRef.createComponent ou createComponent. A hydration do Angular não suporta este caso de uso.

Mais informações sobre hydration podem ser encontradas neste guia.

Os exemplos a seguir irão disparar o erro.

@Component({  selector: 'dynamic',  template: `  <ng-content />`,})class DynamicComponent {}@Component({  selector: 'app',  template: `<div #target></div>`,})class SimpleComponent {  @ViewChild('target', {read: ViewContainerRef}) vcr!: ViewContainerRef;  envInjector = inject(EnvironmentInjector);  ngAfterViewInit() {    const div = document.createElement('div');    const p = document.createElement('p');    // In this test we create DOM nodes outside of Angular context    // (i.e. not using Angular APIs) and try to content-project them.    // This is an unsupported pattern and an exception will be thrown.    const compRef = createComponent(DynamicComponent, {      environmentInjector: this.envInjector,      projectableNodes: [[div, p]]    });  }}

Depurando o erro

A mensagem de erro no console do desenvolvedor deve conter informações sobre uma parte específica da estrutura DOM da aplicação que está causando o problema. Revise essa parte da aplicação em busca de erros relacionados à hydration, como manipulação direta do DOM usando APIs nativas.

Você pode adicionar o atributo ngSkipHydration ao node host do seu component como uma possível solução alternativa.