Ну это так, к слову. А вообще, вы спрашиваете, почему обязательно нужно указывать зависимость в конструкторе? Потому что Ангулар анализирует только конструктор и смотрит, какие зависимости там указаны. Причем если вы не переопределяете конструктор абстрактного класса в наследнике, то этот конструктор как бы "копируется", таким образом можно зависимости в наследниках напрямую не указывать