Some NPM Packages have a deeply hidden flaw. They don't keep up with the times!
Here's an example of a failed Angular 9 migration due to a 3rd party package.
Package "@ng-select/ng-select" has an incompatible peer dependency to "@angular/common" (requires ">=6.0.0 <8.0.0" (extended), would install "9.1.11").
Package "@ng-select/ng-select" has an incompatible peer dependency to "@angular/forms" (requires ">=6.0.0 <8.0.0" (extended), would install "9.1.11").
Package "@ng-select/ng-select" has an incompatible peer dependency to "@angular/core" (requires ">=6.0.0 <8.0.0" (extended), would install "9.1.11").
Package "@ngtools/webpack" has an incompatible peer dependency to "typescript" (requires ">=3.4 < 3.6", would install "3.8.3").
Too bad we didn't think about or find this a year ago when we wanted to use it.
The only solution now, is to get rid of it or if we are lucky to
ng update --force
This worked for us, but there were a bunch of complaints.
JWP 2020