Angularjs 无法读取属性'$有效';未定义if形式在带ng if条件的div内

Angularjs 无法读取属性'$有效';未定义if形式在带ng if条件的div内,angularjs,forms,angularjs-validation,Angularjs,Forms,Angularjs Validation,我在一个div中有一个表单,带有ng if条件。最初,表单是关闭的。单击按钮后,将显示表单。但在提交表单时,我发现无法读取未定义的错误的属性“$valid”。如果我将ng If更改为ng show,它将完美运行。但我必须使用ng if。我找不到出错的原因。还有一件事,在出现错误时,我还将表单对象设置为null。如果有人知道答案,我们将不胜感激 这是我的密码 HTML <div id="addCommentDiv" ng-if="showAddCommentForm == true">

我在一个div中有一个表单,带有ng if条件。最初,表单是关闭的。单击按钮后,将显示表单。但在提交表单时,我发现
无法读取未定义的
错误的属性“$valid”。如果我将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>

ng如果条件在满足条件之前不将组件添加到DOM中,而ng show将组件添加到DOM中,当满足条件时,将显示。
因此,这就是它给出错误的原因,因为它在DOM上不可用。

在addComment中传递表单-

$scope.addComment=函数(formAddComment){
console.log('valid');
如果(格式注释:$valid){
console.log('valid');
}
}
好啊

请参阅。我的问题也一样,但我没有用过那个图书馆。“我只使用过angularjs。@AnchalGupta,我知道。但必须有一些解决方案,因为谷歌团队必须关注这个问题。你知道解决方法还是替代方法?我已尝试重新编译该div元素。但还是一样的问题。你能解释一下为什么我需要在这种情况下传递表单吗?你可以通过这个链接-…谢谢迪莎,它工作得很好@AkshayVaghasiya,因为ng if创建了新范围
$scope.addCommentDisabled = false;
$scope.addComment = function () {
    if ($scope.formAddComment.$valid) {
        console.log('valid');
    }
}
$scope.addComment = function (formAddComment) {
 console.log('valid');
 if (formAddComment.$valid) {
    console.log('valid');
 }
}

 <button type="button" ng-click="addComment(formAddComment)" ng-disabled="addCommentDisabled">Ok</button>