I'm unimpressed with essentially the entire framework. It feels over engineered and overly complex with little benefit. Note that I'm saying it feels that way, maybe at some kind of scale this is very helpful, the codebase I'm working in is about 150k sloc.
The biggest gripe for me is how unintuitive it is to compose and reuse bits of UI. Having written almost no React, and absolutely no React professionally, I understand how to compose react components and the basic patterns for communicating between them. It's just not as easy in Angular, so for the most part it just doesn't happen (at least with the devs I'm working with). Patterns such as render props, HOC, stuff like that is not straight forward in Angular. I'm probably not thinking in the "Angular" way or something.
The dependency injection patterns that Angular is so fond of is something I'm not enthralled with as well. It made more sense in angularjs since es2015 modules weren't prevalent at the time, it really solved a problem there. I don't think it's as helpful in Angular now, and is yet another framework specific thing you're going to have to grasp at a decently deep level.
I work right next to another dev that was hired about a month before me. He's coming from writing React for the last couple of years, and angularjs was the first SPA framework he ever learned. He is constantly cursing how Angular does just about everything, he's not a happy camper.
If I was calling the shots today I would not use Angular for my SPA framework.
The DI framework in Angular is not concept novel to Angular. It's essentially an implementation of the DI.
(upgrading isn't why I like it)
I agree that ng build --prod finds different errors then ng serve -o does but we build once a day and fix them when we find them, before deploying to QA. We've also learned pretty well when a bug in build might be caused (usually not declaring a property properly or wrong type or whatever)
Actual development is pretty easy once you learn the concepts. Documentation, training, tutorials are good IMO also.
The only complaints I have are PrimeNG (our CSS framework) has a LOT of bugs, is sometimes poorly documented and the built in components are often lacking; when they are, we extend them and add what functionality we need ourselves.
I don't want to cause a React vs Angular thread - but compared to React and the 100s of ways to get a project built, I prefer to use Angular - here is the MVC and go type approach.
I really prefer Vue, because it gets out of my way when declaring services or making modules etc.
Biggest pain point is doing stuff outside of the angular framework. Interacting with the browser’s History API is annoying, angular splits this functionality over a few disparate modules and it’s heavily suggested you do not call the raw APIs directly, but instead deal with the tangled mess angular provides.
I had some pains when I first got started, but that was because I wasn’t doing it the “angular way”. If you find you’re writing too much code and it feels like “low-level” code, you’re probably doing it wrong. I spent a lot of time wrangling Observables and async pipes before I found patterns that were simple and met my needs.