When you set contenteditable="true" on the table it makes everything editable. At the very least the table headers should be forced to not be contenteditable by default.
I also tested this and setting contenteditable="true" on the table, or an element without an ng-model just changes the DOM but not the backing data model.
When you set contenteditable="true" on the table it makes everything editable. At the very least the table headers should be forced to not be contenteditable by default.