Two Way Data-Binding - This good feature of AngularJS, when you update any properties in your model, your UI will update. Similarly when UI elements get updated, the changes get reflected to model properties.
Templates - In AngularJS, a template is just plain-old-HTML. The HTML vocabulary is extended, to contain instructions on how the model should be projected into the view.
MVC - AngularJS incorporates the basic principles behind the original MVC software design pattern into how it builds client-side web applications.
Dependency Injection - Dependency injection allows you to do several things, first it allows for you to specify only what you need in your controller, factory, service, etc.
Directives - A directive is essentially a function that executes when the Angular compiler finds it in the DOM.
Testing - AngularJS designed with testability in mind, so that it makes testing your AngularJS applications as easy as possible.