Up until now, we have built components. But components do not replace the directives that we are familiar with from Angular 1. If you are not familiar with Angular 1 directives, don't worry, we will explain the difference in a minute.
Let's start by defining what a directive is in Angular terminology: a directive is a custom attribute or an element that extends HTML tags by adding custom behavior.
In Angular 2, we have three types of directive: component directive, attribute directive, and structural directive. We are already familiar with components, so let's define the other types:
Directives as opposed to components, do not require a template, and usually define a selector as an attribute.