2017-03-08 59 views
0

我一直在尋找通過形式文檔,以及通過SO,但我不能確定如果下面是可能的。有沒有人遇到過解決方案?AngularJS形式表單 - 如何使單選按鈕需要

問題:如何配置Formly Form單選按鈕問題是必需的?

背景:我有一個API形式的問題返回到前端。例如,我可能會得到以下回: enter image description here

這兩個字段都是DB中的「必需」。如果我沒有輸入「什麼是您的博客網址?」的答案,我會得到一個「必填字段」!信息。真棒。

但是如果我不填寫那個單選按鈕,我就不會收到這樣的消息。當我點擊「確認」時,表單就會掛起。

任何想法如何得到'這種形式是必需的!'無線電問題的消息?再次,這些問題不是硬編碼的,所以它不像向HTML中添加選項那麼簡單。


是的,我試過使用required:true。與選擇工作很好,但似乎與單選按鈕無關。試試這個:

formlyConfigProvider.setType([{ 
name: 'radio', 
templateUrl: "radioTemplate.html", 
wrapper: ['simpleLabel', 'errorMessage'], 
defaultOptions: { 
    noFormControl: false 
}, 
apiCheck: function apiCheck(check) { 
    return { 
    templateOptions: { 
     required: true, 
     options: check.arrayOf(check.object), 
     labelProp: check.string.optional, 
     valueProp: check.string.optional 
    } 
    }; 
}, 
controller: ['$scope', 'HelpersService', function($scope, HelpersService) { 
    if (['Internet Explorer', 'MSIE', 'Unknown', 'Edge'].indexOf(HelpersService.getBrowserName().name) > -1) { 
    $scope.ieClass = 'ie'; 
    } 
}] 

}]);

我得到以下錯誤:

enter image description here

這使我相信這不是單選按鈕的選項。但是,如果我錯誤地解釋了這個錯誤,請讓我知道! :)

有人要求一個代碼示例。代碼庫中的很多代碼都是專有的;不過,我在下面列出了用於從數據庫返回的問題的模板。我真正好奇的是,如果任何人之前遇到過這個問題,並且是否有文件配置選項來繞過它,或者是非常簡單的黑客攻擊。否則,我會考慮用控制器中的函數來檢測這個。

****並非所有從數據庫返回的問題都將是必需的!

<div ng-if="ctrl.questions"> 
 
    <form name="ctrl.form" ng-submit="ctrl.submit(ctrl.questions.model)" novalidate> 
 
     <formly-form form="ctrl.form" class="input" fields="ctrl.questions" model="ctrl.questions.model" > 
 
      <input type="submit" class="btn" id="submit" value="Confirm" /> 
 
     </formly-form> 
 
    </form> 
 
</div>

回答

0

添加required的單選按鈕:

<input type="radio" name="myRadio" required ng-model="myModel" value="myValue"/> 

然後你可以使用NG-禁用檢查是否選擇了單選:

<input type="button" ng-click="action()" value="Next" ng-disabled="myform.myRadio.$invalid" /> 
+0

感謝您的回覆,但表格沒有硬編碼。相反,它是從數據庫動態創建的。 –

+0

由於您無法控制表單,因此您可以在js部分手動進行驗證,然後將消息「注入」到對象中。 –

0

使用ng-required驗證ch這樣

<div ng-app="app" ng-controller="ctrl"> 
    <form name="myForm" ng-submit="submit()" > 
     <input type="radio" ng-model="roommate" value="roommate" ng-required="!roommate"> roommate <br/> 
     <button type="submit">Submit</button> 
     </form> 
</div> 

Demo

+0

感謝您的回覆,但表單並未硬編碼。相反,它是從數據庫動態創建的。 –

+0

發佈代碼示例 –

0

容易eckbox ......你添加所需的:在templateOptions如此。還有一個選項是禁用的。你甚至不打擾看網站上的任何例子嗎?這可以很容易地找到這樣做

{ 
    key: 'radiobutton1', 
    templateOptions: { 
     required: true, 
     label: 'Please make a selection', 
     options: [{value: 'Steak', id: 'steak'}, {value: 'Lobster', id: 'lobster'}] 
    } 
} 
+0

需要的示例:true我在文檔中看到指的是type:input。是的,我試圖將這個功能應用於單選按鈕,但是當我這樣做時,我得到'檢查器不是函數'錯誤。我是初學者,可能會忽視某些內容,但我正在嘗試在發佈之前閱讀文檔。如果我的努力對你很惱人,你不必回答我的問題。 –

+0

它對單選按鈕的作用相同。確保它在templateOptions – MattE

+0

謝謝。仍然看到提到的錯誤。已更新我的問題以更好地反映問題。 –