Лучший вариант — описать все зависимости класса в одном месте и предоставить фреймворку их подготовку (у зависимостей ещё и свои зависимости могут быть). Для этого и нужен провайдер.
Ещё раз — вы путаете. Ваш класс и сервис-провайдер — это две разные сущности. Создавать провайдер не нужно, можно использовать стандартный. Регистрировать свой класс в стандартном провайдере имеет смысл.
Зачем нужен DI-контейнер поищите, этот вопрос уже очень много раз объяснён в самых разных видах, нет смысла повторяться.
Для этого нужно получить всех потомков и для каждого проверить наличие класса. Если у кого-то нет - флаг в false. Как я раньше написал, как сделать и то и другое вам показали. Что же тут сложного?
У вас задача "получить этот ID внутри формы". Нужен код того места, где вы пытаетесь его получить и у вас не получается. Я не знаю, что вы подразумеваете под "формой" - её шаблон или метод, который обрабатывает его сабмит.
Алексей Уколов
@alexey-m-ukolov Куратор тега Веб-разработка
Вот в этом у меня опыта нет. Можно посмотреть чего там свежего Гугл и Эпл намудрили, они любят это дело. Но их разработки обычно работают только в их же собственных браузерах первое время.