Skip to main content

NgZone

  • NgZone

  • Bom uso

    • Isso é útil quando você precisa executar uma tarefa que pode ser demorada ou que pode causar bloqueios na thread principal da aplicação.
  • O Angular aproveita o ZoneJS para descobrir quando uma tarefa assíncrona é concluída e, como resultado, um ciclo de detecção de alteração deve ser acionado

  • Zona do angular

    • Em resumo, a zona do Angular é um mecanismo interno do framework que é usada para detectar e gerenciar as mudanças de estado na aplicação, bem como para rastrear e gerenciar exceções. Ela é essencial para garantir que o ciclo de detecção de mudanças do Angular seja executado corretamente e para manter a consistência entre o estado interno da aplicação e a interface do usuário.
  • Como barrar eventos de serem escutados pelo ngZone

  • Criar um arquivo chamado zone-flags.ts

    • dentro do arquivo adicione window__zone_symbol__UNPATCHED_EVENTS=[’scroll’]
  • Depois importe esse arquivo dentro do polyfills.ts

  • Ou podemos adicionar manualmente dessa forma

export class TestComponent {
constructor(private zone: NgZone) {}

ngOnInit() {
this.zone.runOutsideAngular(() => {
// don't forget to unsubscribe
fromEvent(window, 'scroll').subscribe(...);
});
}
  • Para usar o NgZone, basta injetá-lo em um componente ou serviço e, em seguida, usar o método **run()**para executar a tarefa assíncrona dentro da zona do Angular. Isso garante que o Angular esteja ciente da tarefa assíncrona e que o ciclo de detecção de mudanças seja executado corretamente após a conclusão da tarefa.
  • Além disso, o NgZone também fornece um método runOutsideAngular() , que permite executar tarefas fora da zona do Angular, se necessário. Isso pode ser útil para tarefas que não afetam diretamente o estado da aplicação ou a interface do usuário, reduzindo a sobrecarga do ciclo de detecção de mudanças do Angular.