Angular Directives: A Deep Dive