when doing an upgrade you really want to consider 4 things:
(1) unit tests
unit tests with 100% coverage should be in place to ensure nothing breaks when upgrading - obviously this is the dream and time does not always allow for this - for smaller sites you may be able to get away with just manual testing
(2) npm packages
You should update as many npm packages as possible first, although this can be quite high risk if your site is massive and there is a lack of unit tests.
Upgrading npm packages (not angular) will hopefully reduce issues with failing peer dependencies, and of course, new packages often include bugfixes, performance improvements
If you have a lot of packages to upgrade then prob best to upgrade low risk ones first - e.g. anything that does not jump a major version (major version upgrades may have breaking changes)
https://www.npmjs.com/package/npm-check-updates is useful here and should be installed globally
a slowly slowly approach should be used here - upgrading all packages at once may make it difficult to identify any upgrades that are causing issues
(3) Angular
Use https://update.angular.io/ to help you
Following the above steps should minimise any problem with an Angular upgrade
However, if you don't want to upgrade Angular or don't have time then you may be able to skip this for now
(4) Node
Go to the next LTS release - avoid non-LTS versions
These are the steps I follow although you may be able to get away without upgrading Angular (again it depends on peer dependencies)
Sometimes forcing an upgrade when you face peer dependency issues by using the --force flag works, although this is potentially risky and should be avoided if at all possible