我试图将自己的项目从角度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>
答案 0 :(得分:0)
Angular 2没有任何等价的$compile
,故意,我猜是因为它的使用通常是设计不良的指标。
你需要什么?您真的需要能够在模板中动态插入绝对任何吗?如果只选择一个组件从预制的可用组件列表中显示就足够了,那么*ngSwitch
或路由器都可以完成这项工作。
答案 1 :(得分:0)
DynamicComponentLoader是你得到的最接近的。使用DCL,您可以动态地将任意组件插入DOM中。