One of the core feature you will want in every presentation or client side development framework is data binding. Unlike any other frameworks angular provides two way data binding. In angular all you will have to do is to connect the view to a model. And you are done! Later in your application if the model changes the view get changed and if the view changes the model get changed. This feature was so much needed because before that developers have to write additional codes to update the views and models separately. Now there is less code and less code is always good!
Directives are like your custom HTML. Angular has many built in directives that makes your HTML declarative. Some of them are ng-view, ng-model, ng-controller etc. You can build your own directives and to make a custom HTML element, attribute or class. By default all directives that you create are attributes if you don’t define its mode. We will take a deeper dive into directives later.
Dependency injection is how your angular modules talk to different services throughout the applications [We will talk about modules and services later]. As I already said you can use other library like jquery with angular. To do that you will have to inject the library dependency where you will be needed it. Angular’s own services are separated into different files. To use these different services throughout different modules, you will have to inject the dependencies. For example if you want to use angular’s animation service you will have to inject the ngAnimate into your application module.