When you get to step 8, you may be seeing this error in the console "html.indexOf is not a function". Some reading suggests that getTrustedHtml expects a string and not an object (but I've seen older examples just as the book has it, so it must've changed at some point), to get the contenteditable.
js to work, change this:
Code:
ngModelCtrl.$render = function () {
$element.html($sce.getTrustedHtml(ngModelCtrl.$viewValue || ''));
to this:
Code:
ngModelCtrl.$render = function () {
$element.html($sce.getTrustedHtml(ngModelCtrl.$viewValue.toString() || ''));