对于此用例,在角度2中使用编译函数的替代方法是什么?

时间:2016-04-19 13:38:03

标签: angular

我有一个现有的指令,我试图升级到角度2.基本上,我不希望这个指令的消费者被迫改变他们的HTML代码。

<div ng-controller="MyCtrl">
  <textbox multiline></textbox>
  <textbox></textbox>
</div>

我有jsfiddle here

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,但我不想为我在元素上的每个属性设置所有额外的绑定。

请告知。

0 个答案:

没有答案