Automatically 2-way binding everything is a serious mistake since most elements don't need it and it's a performance hit. Scope and ControllerAs are in conflict (particularly with ng-if/ng-repeat). Dependency injection is needless, since Javascript module requires (via Browerify or Webpack) handle this much better and sensibly. Extremely hard to debug since stacktraces are useless. Module factories, services, and values are unnecessary, since Javascript already has established design patterns for these concepts.
If you haven't tried React, please give it shot. Particularly if you are about to make a decision on what frontend framework you will use, or if you are using AngularJS already and recognize that it's approach leads you to ugly workarounds.
I love Angular for how it allows to seprate concerns cleanly. You view logic goes to templates and directives. Your data/bisness logic goes to controllers. When developer writes controller he thinks in terms of data he works with. When developer writes view he thinks in temrs of how to represent data available to him from scope.
I hate how in Backbone or just jQuery way you have mess of html, javascript and data manipulation in same class... Reminds of how messy frameworkless PHP looks...
Now looking at some React examples I see jsx files that do same mess... Model manipulation, some logic and html code in same file... WTF? How is that good?
May be someone can point me to a good example app of using React with good speration of concerns? Classical TODO MVC looks horrible...
https://github.com/tastejs/todomvc/blob/gh-pages/examples/re...
I haven't faced any of the issues that you talked about. That said, we sort of "get" angular and write proper angular code because we actually understand it well enough. I have seen code in projects which are outright crap. For example, we don't do any DOM manipulations whatsoever in any of our controller code. There were no major hacks that I can recall of.
One thing I agree with is the useless stack traces which made is extremely hard to debug Angular.
Reinventing control structures in an expression language and placing that in HTML attributes should tell you everything you need to know about AngularJS foolishness. Why should users incur the penalty of download something some needless as an express ssion language when JavaScript is already richly expressive? Why cause developer anguish by having an expression language which can not be statically checked and throws silly stacktraces? It makes zero sense.
The only thing you need is the last mile transformation from view model to DOM, everything else that AngularJS provides is unnecessary and foolish.
If you haven't tried React, please give it shot. Particularly if you are about to make a decision on what frontend framework you will use, or if you are using AngularJS already and recognize that it's approach leads you to ugly workarounds.
I can't emphasize enough that AngularJS is bunk.