Disabling submit button based on fields added with ng-bind-html
<p>JSFiddle here: <a href="http://jsfiddle.net/c6tzj6Lf/4/" rel="nofollow">http://jsfiddle.net/c6tzj6Lf/4/</a></p>

<p>I am dynamically creating forms and buttons and want to disable the buttons if the required form inputs are not completed.</p>

<p>HTML: </p>

<pre><code>&lt;div ng-app="choicesApp"&gt;
  &lt;ng-form name="choicesForm" ng-controller="ChoicesCtrl"&gt;
    &lt;div ng-bind-html="trustCustom()"&gt;&lt;/div&gt;
    &lt;button ng-repeat="button in buttons" ng-disabled="choicesForm.$invalid"&gt;
      {{button.text}}
    &lt;/button&gt;
  &lt;/ng-form&gt; 
&lt;/div&gt; 
</code></pre>

<p>JavaScript:</p>

<pre><code>angular.module('choicesApp', ['ngSanitize'])
  .controller('ChoicesCtrl', ['$scope', '$sce', function($scope, $sce) {
    $scope.custom = "Required Input: &lt;input required type='text'&gt;";
    $scope.trustCustom = function() {
      return $sce.trustAsHtml($scope.custom);
    };
    $scope.buttons = [
      {text:'Submit 1'},
      {text:'Submit 2'}];
}]);
</code></pre>

<p><code>choicesForm.$invalid</code> is <code>false</code> and does not change when entering text into the input field.</p>

<p><strong>Solution:</strong></p>

<p>I ended up using the angular-bind-html-compile directive from here: <a href="https://github.com/incuna/angular-bind-html-compile" rel="nofollow">https://github.com/incuna/angular-bind-html-compile</a></p>

<p>Here is the relevant bit of working code:</p>

<pre><code>&lt;ng-form name="choicesForm"&gt;
  &lt;div ng-if="choices" bind-html-compile="choices"&gt;&lt;/div&gt;
  &lt;button ng-click="submitForm()" ng-disabled="choicesForm.$invalid"&gt;
    Submit 
  &lt;/button&gt;
&lt;/ng-form&gt;
</code></pre>

<p>And choices might be a snippit of HTML like this:</p>

<pre><code>&lt;div&gt;&lt;strong&gt;What is your sex?&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;input type="radio" name="gender" ng-model="gender" value="female" required&gt;
  &lt;label for="female"&gt; Female&lt;/label&gt;&lt;br&gt;
  &lt;input type="radio" name="gender" ng-model="gender" value="male" required&gt;
  &lt;label for="male"&gt; Male&lt;/label&gt;
&lt;/div&gt;
</code></pre>