Guia para atualizar seu aplicativo Angular v16.0 -> v17.0 para aplicativos avançados
Compartilhe este conteúdo:
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
setupTestingRouter
, canceledNavigationResolution
, paramsInheritanceStrategy
, titleStrategy
, urlUpdateStrategy
, urlHandlingStrategy
, e malformedUriErrorHandler
em provideRouter
ou RouterModule.forRoot
já que essas propriedades agora não fazem parte da Router
API 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.js
e zone.js/dist/zone
para zone.js
e 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 ngSkipHydration
ou 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 loadComponent
herdem dados de seu pai, especifique to paramsInheritanceStrategy
, always
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
Deixe uma resposta