我很想知道是否可以从Angular 4组件的模板属性中调用函数,如下所示?我希望将模板作为字符串从函数或甚至模板URL返回。模板将根据@Input字符串值进行选择,并且是函数签名的一部分。
目前我正在接受" this.getTemplate不是一个功能"
任何帮助将不胜感激!
@Component({
selector: 'app-test',
styleUrls: ['./test.component.css'],
template: this.getTemplate(this.templateName)
})
export class TestComponent implements OnInit {
@Input() templateName: string = '';
getTemplate(name: string) : string {
if (name == "first") {
return `<h5>First Template</h5>`
}
return `<h5>Second Template</h5>`
}
getTemplate(name: string) : string {
if (name == "first") {
return './first.component.html'
} else {
return './second.component.html'
}
}
constructor() {}
ngOnInit() {}
}
答案 0 :(得分:1)
否,这是无法做到的。您需要静态引用它,否则angular将找不到要加载的模板。
因为Angular编译器需要最初找到模板并能够访问它。它无法解决变量或函数。