I've built moderately sized applications in both angular.js and backbone, backbone is much more pleasant to work with if only for the fact that everything is
obvious, even if that requires you to do more development legwork and thinking about your application structure. (this is a feature, not a bug)
Angular.js data bindings are great and things like ng-repeat are neat until you start to step outside of the bounds of the angular garden.
Want to fetch data yourself and not use the angular resource plugin? (The resource plugin restricts the shape of data you can return from your server, i.e. every resource.get() request must only return a single object, if you want to receive an array you need to use .query() ). If you want to use jQuery for ajax, for instance, you lose all data bindings because vanilla javascript doesn't have the angular secret sauce!
edit: angular provides utilities to alleviate this issue, addressed in comment below.
Well that's fine maybe there's an event somewhere you can hook into and trigger off of, right? Try to find this in the docs, I dare you! If this doesn't demonstrate the incidental complexity caused by using a tool like angular, consider the documentation for backbone and angular, or either projects source for that matter. You can read backbone's source in an afternoon, I couldn't say the same for angular (or ember, or knockout). Because of this I can be confident backbone is largely bug free, I absolutely can't say the same about larger projects like angular.
Angular.js is meant to have a low barrier of entry, but because of this the developer interface is a thin facade on top of astonishingly complex internals. Contrast this to backbone which provides a simple and solid base for your application, providing freedom and foundation rather than a cookie cutter solution.
When I consider the trade-offs between client-side tools for structuring applications backbone consistently comes out on top.