Similar conversation 10 months ago:
Honestly the real shame is that IDEs don't present a more integrated UI for separate files, and that on the other hand in my Vue apps I still have to argue over the order of script/template/style sections. I guess Angular at least avoids that second problem.
The new templating syntax is simply @if () @else () ... it makes it much clearer to read in many cases.
I never had a problem with *ngIf as long as you are controlling the visibility of one element. It became messy when you needed "else" statements in there.
The problem with Angular, especially as the app grows is that you will have many different subscribers that all listen on the same state changes, then fire them again so you will have code that just runs again and again and it's extremely hard to have a mental model on how the system work and what code runs when.
The code also easily gets super slow because you run something, it affect state, then it triggers something else that triggers something else that just happen to affect the first state, whoops now you have a loop. Even if the loop resolves, it's pretty much inevitable to get a loop sometimes if the app is complex enough, at least in my experience working with several other devs.
If you have different subscribers, all on the same state change, you may not have chosen to use ShareReplay, or filter, or bothered to use a tool like ngrx that has memoized selectors.
The same problem you're complaining about is the same thing people in the react community are complaining about because they never bothered to understand useEffect, and now have massive cascading updates.
There is a very good reason they chose to make everything a subscriber, and it helps avoid pitfalls, because it doesn't hide away the async nature of everything. Signals are just a simpler way to understand and use that same async nature.
I really tried to learn RxJS, I used a lot of different methods like filter and what not but I still got into a huge amount of issues but honestly a lot of that was because angular was not really fit for the type of application we were trying to build. Especially as we relied heavily on query params for state. There were many strange behaviors of Angular Router that I ran into several times. It has some kind of own internal state and fires updates in an unexpected way. I remember sitting hours just to try to get the query params to update correctly and I was not the only one having these kinds of issues.
Even if I agree useEffect is unnecessary complex, it's still far far away from being as complex as RxJS and Angular. I remember I was trying to add some pipe service or whatever it was called and it was near to impossible to achieve what I wanted to do which would be trivial in any other framework/vanilla JS (unfortunately I don't remember what it was).
Then using third party stuff in Angular is a nightmare as well. You have to deep dive into how it's being built to make sure all the stuff is brought into the build step etc. The configuration is a nightmare if you want to do something special like making use of Angular Elements that's barely documented at all.
I never got to use the Signals feature, because I left the company before it got introduced into Angular.
It never seemed suitable for mostly-frontend devs, but it's probably perfect for mostly-backend ones.
Especially now with the new template syntax, signals, and other recent changes.
I personally find Angular to be fine - sure there is a learning curve but that is true of anything (it's not like you can just pickup modern react and make anything functional without having to know how react works and spend ages picking libraries and installing and learning how to use npm, spending 6 months in a sanatorium getting therapy after realising you have to use npm for react and accept the shit show dumpster fire you are letting yourself in for by relying on npm, and deciding if you should use hooks or not and what about JS vs TS etc etc ). I find JSX in React an uncomfortable compromise that throws out a bunch of hard-learnt best practice in computer science (mixing up and confusing presentation with business logic in the same file). Separation of concerns is a good thing.
Angular will continue to be a solid choice for large professional outfits that care about things like maintainability, repeatable builds, dependency management, readability etc etc. Having Angular be the framework that powers websites like google.com and YouTube is just going to make it even more of a "no-brainer" choice than it already is if people are picking a web UI framework.
I cannot understand how it was invented/why it exists, how smart people at Google convinced themselves to use it. I cannot understand how they let it escape into the wild or even why those not forced to use it, choose it.
I know I’ve begged before for this, and it’s pointless, but please if you’re in the position to, please consider snuffing it out and starting over.
What do you use?
My last job forced Angular on me, I quit after a while (not because of solely that reason) but I told them Angular was a bad choice and they chose to overrule me. Pretty funny now, they will have to endure the pain of migrating a large app which makes me feel good.
Make stupid choices, win stupid prizes.