Ответ 1
Модуль и директива могут иметь одно и то же имя. Вы даже можете включить службу, factory или провайдер с тем же именем, что и модуль, но не с тем же именем, что и один.
Причина, по которой вы можете использовать одно и то же имя для директивы в качестве модуля, состоит в том, что модули и их имена хранятся в одном объекте, а директивы и их имена хранятся в другом объекте.