可以从Angular 4组件模板属性调用函数吗?

时间:2017-10-26 01:39:07

标签: javascript angular typescript

我很想知道是否可以从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() {}
}

1 个答案:

答案 0 :(得分:1)

,这是无法做到的。您需要静态引用它,否则angular将找不到要加载的模板。

因为Angular编译器需要最初找到模板并能够访问它。它无法解决变量或函数。

请看这个问题https://github.com/angular/angular/issues/14323