Compartilhe este conteúdo:

Angular-new Guia para atualizar seu aplicativo Angular v16.0 -> v17.0 para aplicativos avançados

Antes de atualizar

Você não precisa fazer nada antes de alternar entre essas versões.

Atualize para a nova versão

Revise essas alterações e execute as ações para atualizar seu aplicativo.Certifique-se de estar usando uma versão compatível do node.js antes de atualizar seu aplicativo. Angular v17 suporta versões node.js: v18.13.0 e mais recentes. Certifique-se de estar usando uma versão compatível do TypeScript antes de atualizar seu aplicativo. Angular v17 suporta TypeScript versão 5.2 ou posterior. Certifique-se de estar usando uma versão compatível do Zone.js antes de atualizar seu aplicativo. Angular v16 oferece suporte a Zone.js versão 0.14.x ou posterior. No diretório do projeto do aplicativo, execute 

ng update @angular/core@17 @angular/cli@17 para atualizar seu aplicativo para Angular v17. O Angular agora remove automaticamente estilos de componentes destruídos, o que pode afetar seus aplicativos existentes caso você dependa de estilos vazados. Para alterar isso, atualize o valor do 

REMOVE_STYLES_ON_COMPONENT_DESTROY provedor para false. Certifique-se de configurar 

setupTestingRoutercanceledNavigationResolution, paramsInheritanceStrategy, titleStrategyurlUpdateStrategyurlHandlingStrategy, e malformedUriErrorHandler em provideRouter ou RouterModule.forRoot já que essas propriedades agora não fazem parte da RouterAPI pública.

NgDoCheck funcionamento em componentes estanciados dinamicamente:

Para componentes instanciados dinamicamente, agora executamos ngDoCheck durante a detecção de alterações se o componente estiver marcado como sujo. Talvez seja necessário atualizar seus testes ou lógica ngDoCheck para componentes instanciados dinamicamente. Lidar com erros de análise de URL em UrlSerializer.parse vez de malformedUriErrorHandler porque agora faz parte da superfície da API pública. Altere as importações profundas de Zone.js como zone.js/bundles/zone-testing.jse  zone.js/dist/zone para zone.jse zone.js/testing. Pode ser necessário ajustar a configuração do roteador para evitar redirecionamentos infinitos após redirecionamentos absolutos. Na v17 não evitamos mais redirecionamentos adicionais após redirecionamentos absolutos. Altere as referências para 

Noop, NgSwitch e Signal também sofreram alterações:

AnimationDriver.NOOP usar NoopAnimationDriver porque AnimationDriver.NOOP agora está obsoleto. Talvez seja necessário ajustar a verificação de igualdade NgSwitch porque agora o padrão é uma verificação mais rigorosa com === em vez de ==. Angular registrará uma mensagem de aviso para os usos em que você precisará fornecer um ajuste. Use update em vez de mutate em sinais angulares. Por exemplo 

items.mutate(itemsArray => itemsArray.push(newItem));será agora

items.update(itemsArray => [itemsArray, …newItem]);

Para desabilitar o uso da hidratação ngSkipHydrationou retirar o provideClientHydration chamado da lista de provedores já que withNoDomReuse não faz mais parte da API pública. Se você deseja que as rotas filhas loadComponentherdem dados de seu pai, especifique to paramsInheritanceStrategyalways que na v17 agora está definido como emptyOnly.

Conclusão:

Para você que ja vem acompanhando as versões do angular e realizando updates de forma regular, não vai enfrentar grandes problemas nesse update da v16 para a v17, porém para versões mais antigas esse update pode demandar um pouco mais de trabalho. Caso seja interessante podemos estar trazendo o passo a passo aqui sobre como atualizar, deixe seu comentário sobre qual versão vocês precisam de ajuda e se é necessário trazer um post sobre o assunto.

Obs.: Textos traduzidos update angular.io