无法阅读财产' $ valid'如果表单在具有ng-if条件的div内,则为undefined

时间:2016-09-09 07:02:17

标签: angularjs forms angularjs-validation

我在div中有一个表单,其中包含ng-if 条件。最初表格已关闭。单击按钮,将显示表单。但在提交表单时,我收到Cannot read property '$valid' of undefined错误。如果我将ng-if更改为ng-show,则表示完美。但我必须使用ng-if。我无法找到错误的原因。还有一件事,在收到错误时,我还将表单对象变为null 。如果有人知道答案,我们将不胜感激。

这是我的代码

HTML

<div id="addCommentDiv" ng-if="showAddCommentForm == true">
    <form id="formAddComment" name="formAddComment" novalidate>
        <textarea id="taAddComment" name="taAddComment" placeholder="Add a comment.." ng-model="new_comment" ng-maxlength="1000" ng-required="true"></textarea>
        <button type="button" ng-click="addComment()" ng-disabled="addCommentDisabled">Ok</button>
    </form>
</div>

JS

$scope.addCommentDisabled = false;
$scope.addComment = function () {
    if ($scope.formAddComment.$valid) {
        console.log('valid');
    }
}

2 个答案:

答案 0 :(得分:6)

在addComment中传递表单 - fiddle

In [122]:
df.merge(df_subset, how='left', indicator=True)

Out[122]:
          a         b         c     _merge
0 -0.134933 -0.664799 -1.611790  left_only
1  1.457741  0.652709 -1.154430  left_only
2  0.534560 -0.781352  1.978084       both
3  0.844243 -0.234208 -2.415347  left_only
4 -0.118761 -0.287092  1.179237  left_only

答案 1 :(得分:0)

ng-if 条件不会将组件添加到DOM中,直到满足条件,而 ng-show 在DOM中添加组件以及何时条件很满意,它显示出来。 所以,这就是它给出错误的原因,因为它在DOM上不可用。