С помощью Angularjs 1.x вы можете легко переключаться на html-шаблоны при нажатии кнопки между модулем edit/readonly. Директива ng-include была ключом.
<table>
<thead>
<th>Name</th>
<th>Age</th>
<th></th>
</thead>
<tbody>
<tr ng-repeat="contact in model.contacts" ng-include="getTemplate(contact)">
</tr>
</tbody>
</table>
Функция get getTemplate выполняет этот код:
$scope.getTemplate = function (contact) {
if (contact.id === $scope.model.selected.id) return 'edit';
else return 'display';
};
который снова приводит к тому, что один из этих шаблонов будет активен в пользовательском интерфейсе:
DISPLAY
<script type="text/ng-template" id="display">
<td>{{contact.name}}</td>
<td>{{contact.age}}</td>
<td>
<button ng-click="editContact(contact)">Edit</button>
</td>
</script>
ИЗМЕНИТЬ
<script type="text/ng-template" id="edit">
<td><input type="text" ng-model="model.selected.name" /></td>
<td><input type="text" ng-model="model.selected.age" /></td>
<td>
<button ng-click="saveContact($index)">Save</button>
<button ng-click="reset()">Cancel</button>
</td>
</script>
https://jsfiddle.net/benfosterdev/UWLFJ/
С Angular 2 RC 4 не существует n-include.
Как бы я сделал ту же функцию только с Angular 2 RC4?