Angular2 $ compile指令为AngularJS 1

时间:2016-03-13 23:08:36

标签: javascript angularjs compilation angular

我试图将自己的项目从角度1重写为角度2,我需要编译指令,但我不能重写它以完成与以前相同的工作。

app.directive("compile", compile);
compile.$inject = ["$compile"];
function compile($compile) {
    return function ($scope, element, attrs) {
        $scope.$watch(
          function ($scope) {
              return $scope.$eval(attrs.compile);
          },
          function (value) {
              element.html(value);
              $compile(element.contents())($scope);
          }
        );
    };
}

我知道Angular2中没有观察者,但是我有可能在Angular2中获得相同的功能吗?

我需要使用这样的数据(我的意思是使用子编译指令编译):

控制器:

function Controller($scope) {
    $scope.Test1 = '<div compile="Test2"></div>';
    $scope.Test2 = '<h1>Test!</h1>';
}

HTML:

<div compile="Test1"></div>

请记住,Test1和Test2变量可以随时动态更改。

整个事情应该打印结果:

<div compile="Test1">
    <div compile="Test2">
        <h1>Test!</h1>
    </div>
</div>

2 个答案:

答案 0 :(得分:0)

Angular 2没有任何等价的$compile,故意,我猜是因为它的使用通常是设计不良的指标。

你需要什么?您真的需要能够在模板中动态插入绝对任何吗?如果只选择一个组件从预制的可用组件列表中显示就足够了,那么*ngSwitch或路由器都可以完成这项工作。

答案 1 :(得分:0)

DynamicComponentLoader是你得到的最接近的。使用DCL,您可以动态地将任意组件插入DOM中。