The DOM (Document Object Model) is a tree-structure representation of all the elements of a web-page. jQuery, at its core, is a DOM manipulation library. jQuery lets you search, select, and manipulate the DOM elements in a simple way. For example, you can search an element in a document with a certain property, for example get all elements with a div tag and change its color attribute to blue. You can also use jQuery to handle events like button click, create animations, and develop Ajax apps.
On the other hand, Angular is a full-fledged client-side framework giving you a rich set of tools to write web apps and allows you to divide your app into components. It has a number of cool features such as MVC, data binding, and dependency injection. It focuses on separation of concerns, unit testing and end-to-end testing, which facilitates test-driven development.
In Angular, you write a template using HTML5 code. Angular reads in your HTML5-based web page template and compiles it into a new web page using its built in compiler. This means that in Angular, your web page is code to be compiled. But to jQuery, your web page is a DOM to be manipulated.
In fact, jQuery and Angular are two different things and it is like comparing apples with oranges. Angular doesn't replace jQuery. If jQuery.js is present on your web page, Angular will use it automatically. But if the full blown jQuery version is not there, Angular has jQuery Lite built in, which is a trim down version, and allows you to perform basic DOM manipulation.
It is really tempting for the new Angular developers to think something like this: I have this piece of DOM and I can easily use jQuery that operates on this DOM and then add the models and controllers on top of that. This is certainly not the way to do the things the Angular way. In fact, you must start from the ground up with Angular basic principles in mind. They are separation of concerns, declarative view/template, model layer separated from view, data binding, and dependency injection.
When using Angular, you design your app keeping in mind the Angular architecture. Remember that a single page application is just not a web page but a complete application. In addition to thinking like a client-side developer, the Angular developer should start thinking in terms of server-side development too. The developer has to design an application in such a way that each of its components should be complete in itself, easily extensible, and testable.
In the beginning, this clean separation of concerns seems like a little hard to do. But when the app becomes large, it pays off tremendously. You will find the code is convenient to maintain and easy to test and debug.