по всему html для прямого доступа к форме. Для отправки по нажатию кнопки вне формы (используя директиву ngSubmit угловой формы) используйте это.

ular 1 (1.5) контроллер формы имел$setSubmitted() метод, который позволил вам программно установить.$submitted признак истины

Как я могу сделать это в 2 через объект NgForm? Я не хочу использовать шаблон, ака(ngSubmit)="".

я пробовал<formname>.ngSubmit.emit(), но это не устанавливает.submitted к истине.

 Simon_Weaver03 янв. 2019 г., 21:48
Не прямой ответ - но, возможно, привел людей к этому вопросу Я обнаружил супер запутанное состояние гонки. Я устанавливал[disabled]=true скрыть<button> объект во время представления (чтобы вы не могли щелкнуть по нему дважды). Это однако ОСТАНОВЛЕНО. Отправлено из получения установленного, если бы я установил его отключенным внутри(click) обработчик на кнопке отправки (это делалось через свойство @Input). Существуют различные возможные решения этой проблемы (например, использование onsubmit в форме вместо нажатия на кнопку), но это на некоторое время вывело меня из себя.

Ответы на вопрос(1)

ngSubmit на самом деле является источником событий (@Output() обязательный), который будет уведомлять васпосле Форма была отправлена ​​- она ​​делает это, прослушивая событие DOM для отправки в элементе формы хоста.

Так что даже если вы не используетеngSubmit форма все равно будет «отправлена», если пользователь нажмет кнопку «Отправить» внутри формы.

ВыМожно установите флаг отправленной формы вtrue вручную с помощьюonSubmit метод, например через кнопку

<button type="button" (click)="theForm.onSubmit($event)">Submit</button>

.. но по моему опыту с угловыми формами это было бы довольно необычно, чтобы установить это вручную (ngForm директива иngSubmit Источник событий должен быть всем, что вам нужно для управления формой). Есть ли причина, по которой вам это нужно?

 AntonK05 окт. 2017 г., 06:50
Вызов onSubmit () вместо ngSubmit.emit () решил проблему для меня.
 AntonK05 окт. 2017 г., 06:17
У меня такая же проблема. Причина, по которой мне нужно отправить форму через ngSubmit.emit (), заключается в том, что кнопка находится за пределами формы в родительском компоненте. Мне нужно, чтобы представленный флаг был установлен в true, потому что я использую его в своей логике сообщения проверки.
 Garth Mason06 окт. 2017 г., 02:18
хорошо, я вижу - может быть, это более распространено, чем я думал :-)
 mrshickadance05 окт. 2017 г., 16:51
Аналогичная ситуация с AntonK. Чтобы сохранить длинное объяснение, у меня нет контроля над шаблоном или кнопкой, которая запускает отправку, поэтому мне нужно сделать это в коде JS.
 axel30 апр. 2018 г., 17:29
Та же ситуация, что и у @AntonK, но я также не нашел решения, чтобыsubmitted свойство установлено в true ...

Ваш ответ на вопрос