在 Angular 1 中,我们可以使用 templateUrl 动态加载不同的外部模板,如下所示。
var v=$("#cc").val();
v = v + 1;
$("#cc").val(v);
我的问题是如何在 Angular 2 组件下面实现相同的功能?
angular.module('testmodule).diretive('testDirective'), function(){
return {
restrict: 'EA',
replace: true,
scope: {
data: '@',
},
templateUrl: function(element, attrs) {
if(attrs.hasOwnProperty("attr")){
return "views/test1.html";
} else {
return "views/test2.html";
}
}
}
答案 0 :(得分:2)
如果您想动态加载组件,那么
@ViewChild('container', { read: ViewContainerRef }) container: ViewContainerRef;
addComponent(){
var comp = this._cfr.resolveComponentFactory(ExpComponent);
var expComponent = this.container.createComponent(comp);
}
请参阅Angular 2: How to Dynamically Add & remove Components
如果您只想更改模板网址,请尝试这样:
@Component({
selector: 'app-simple-component',
templateUrl: "{{tmplUrl}}"
})
class SomeComponent {
tmplUrl: string= 'views/test1.html';
constructor() {
if(attrs.hasOwnProperty("attr")){
this.tmplUrl ="views/test1.html";
} else {
this.tmplUrl ="views/test2.html";
}
}
}