I can sympathize with the article, but on the other hand, when you reach a certain level of complexity, OO kind of forces you to use dependency injection. Which means providers and factories of some sort for short-lived objects, at least if you want to have testable code. I don't know if it's "enterprise hand-holding bullshit", but having seen code with and without DI, the DI one is definitely easier to work with and refactor. This doesn't mean Angular is not over-engineered, since I don't use it I have no opinion on the matter.
Whether you use OO, Procedural, of Functional programming, you're still going to end up with some variant of IoC in order to keep your abstractions clean.
I really am not seeing a problem anywhere. OO and the structure that follows from it, which is what ends up being seen in this instance, seems like a perfectly reasonable way to write these programs. Programming in an inherently object-based thing like the DOM without objects.. why?
Saying "OO is Evil" is the flavour of the month. Functional Programming is the new cool kid on the block. This would, in theory, be a good thing.
Unfortunately legions of Javascript fanboys have recently noticed that they don't have the keyword 'class' in the language, but they do have functions and have decided this means that it's a functional programming language, and they knew better than everyone all along.
They'll then follow it up with some perfectly nice procedural code and tell themselves it's functional with a nice little pat on the back.
I don't know if any of the "cool kids" believe Javascript is a functional language. Can one write code in a functional STYLE in Javascript? (can they write higher order functions, can they write functions with no side-effects, could they build monads) Sure, it's entirely possible - just like it is in Ruby, Python, and pretty much any decent language. I think what some of the push is, is to write javascript in more of a functional style as they feel it's more elegant. (I could be way off base though... I haven't been "cool" in years)
It feels like nobody is addressing WHY angular uses DI/IoC.. In something like Java or .NET, you use it to a large extent because it separates code nicely and makes it easier to test.
In JS, one big problems is that you want your code to live in different files, and to do this, you either create your own ghetto object namespaces that hold your classes, or use requirejs.
In the case of Angular, they decided to handle this for you, so they provided IoC/DI as a means to accomplish this. They are merely doing this to make up for things that are missing in javascript as a language.
In their defense, it actually works kind of nice compared to the other two approaches imho.