Perhaps because when the browser displays switches (as ng-repeat expands), all your radio stations have the same name, that is, "name="radio{{i}}"
angular has not yet expanded it, therefore, the checked property has not applied properly among all of them, so you will need to use ng-attr-name
so that angular will add an extended name attribute later, so try: -
<div ng-repeat="i in [1,2,3]"> <input type="radio" ng-attr-name="radio{{i}}" ng-attr-id="radioA{{i}}" value="A" checked> A <input type="radio" ng-attr-name="radio{{i}}" ng-attr-id="radioB{{i}}" value="B"> B </div>
Or use ng-checked="true"
so that the checked attribute is applied as the ng-checked directive expands. eg,
<input type="radio" name="radio{{i}}" ng-attr-id="radioA{{i}}" value="A" ng-checked="true"> A
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app> <div ng-repeat="i in [1,2,3]"> <input type="radio" ng-attr-name="radio{{i}}" ng-attr-id="radioA{{i}}" value="A" checked> A <input type="radio" ng-attr-name="radio{{i}}" ng-attr-id="radioB{{i}}" value="B"> B </div> </div>
source share