我有一个现有的指令,我试图升级到角度2.基本上,我不希望这个指令的消费者被迫改变他们的HTML代码。
<div ng-controller="MyCtrl">
<textbox multiline></textbox>
<textbox></textbox>
</div>
myApp.directive('textbox', function() {
return {
restrict:'E',
template: "<div></div>",
compile: function compile(tElement, tAttrs) {
console.log(tAttrs.multiline, tAttrs );
var textbox;
if (tAttrs.hasOwnProperty("multiline")) {
textbox = angular.element('<textarea></textarea>');
} else {
textbox = angular.element('<input type="text"/>');
}
tElement.append(textbox);
return function(scope, iElement, iAttrs) {}
}
}
});
在编译函数中,我使用属性的存在来确定最终呈现的内容。我找不到使用Angular 2重现此功能的推荐方法。使用ElementRef似乎是代码味道,但老实说,Renderer我的文档是多么稀疏我没有不确定如何继续。
我有一个工作plunkr,但我不想为我在元素上的每个属性设置所有额外的绑定。
请告知。