Angular 4从外部html执行函数

Angular 4从外部html执行函数,angular,dynamic,Angular,Dynamic,我是新手。 我有一个进行API调用的组件。 API调用将返回一些包含angular 4代码的html: (click) = "functionName()". 问题是,functionName从未被调用我不需要查看您的代码来告诉您所做的是错误的 当你写作时 (click)="functionName()" 你不是说 处理此标记上的单击事件 你是说 请全能的天使,当你把我的代码编译成原生Javascript时,你能在点击这个标签时绑定一个事件吗 (好吧,我说得太过分了,但你

我是新手。 我有一个进行API调用的组件。 API调用将返回一些包含angular 4代码的html:

(click) = "functionName()".

问题是,
functionName
从未被调用

我不需要查看您的代码来告诉您所做的是错误的

当你写作时

(click)="functionName()"
你不是说

处理此标记上的单击事件

你是说

请全能的天使,当你把我的代码编译成原生Javascript时,你能在点击这个标签时绑定一个事件吗

(好吧,我说得太过分了,但你明白了)

这意味着在一个模板中,当你写这个;它在编译时更改为

onclick="a()" // It's minified once bundled
因此,如果您在数据库中编写此代码,它将不会被编译,这意味着它既不理解
(单击)
是什么,也不理解
functionName
代表什么

你有什么选择? 例如,您可以将其写入数据库中

onclick="windowFunctionName()"
在组件中创建绑定到窗口的函数,而不是编写的函数:

ngOnInit() {
  window['windowFunctionName'] = () => { /* ... */};
}

ngOnDestroy() {
  delete(window['windowFunctionName']; // delete it for memory purpose
}

你能展示你的完整代码(组件、html和服务)吗?我们不能像Angular1中那样编译html吗?不。AngularJS是普通的vanilla JS,现在你使用Typescript:Typescrpit需要由CLI编译成vanilla JS。这意味着,如果您从DB请求一些东西,您的代码已经编译好了,因此可以细微地运行。谢谢@trichetriche