Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从<;生成的html调用.ts文件中的函数;脚本>;_Javascript_Html_Angular - Fatal编程技术网

Javascript 从<;生成的html调用.ts文件中的函数;脚本>;

Javascript 从<;生成的html调用.ts文件中的函数;脚本>;,javascript,html,angular,Javascript,Html,Angular,从生成后,我正在尝试从html调用doThis()函数 因为它是一个运行外部url的脚本,所以我需要使用.ts文件中的变量添加它。它毫无问题地执行并创建我的html元素。该html元素是一个付款表单,当它完成时,它调用位于中的函数,并将订单信息作为参数提供给我 我这里的问题是,我试图从该html函数调用.ts文件中的一个函数来使用该订单信息,但我找不到从html内部引用该.ts函数的方法 .ts文件 export class Component implements OnInit {

生成
后,我正在尝试从html调用
doThis()
函数

因为它是一个运行外部url的脚本,所以我需要使用.ts文件中的变量添加它。它毫无问题地执行并创建我的html元素。该html元素是一个付款表单,当它完成时,它调用位于中的函数,并将订单信息作为参数提供给我

我这里的问题是,我试图从该html函数调用.ts文件中的一个函数来使用该订单信息,但我找不到从html内部引用该.ts函数的方法

.ts文件

export class Component implements OnInit {

    giftupHtml: string = `<script type="text/javascript">
                            (function (g, i, f, t, u, p, s) {
                                g[u] = g[u] || function() { (g[u].q = g[u].q || []).push(arguments) };
                                p = i.createElement(f);
                                p.async = 1;
                                p.src = t;
                                s = i.getElementsByTagName(f)[0];
                                s.parentNode.insertBefore(p, s);
                            })(window, document, 'script', 'https://cdn.giftup.app/dist/gift-up.js', 'giftup');

                            // Track conversions:
                            giftup("conversion", function (payload) { 
                                   doThis();
                            });
                           </script>
                           `;

    constructor( ) { }

    doThis() {
        console.log("This isn't called.");
    }
导出类组件实现OnInit{
giftupHtml:字符串=`
(函数(g,i,f,t,u,p,s){
g[u]=g[u]| |函数(){(g[u].q=g[u].q | |[]).push(参数)};
p=i.createElement(f);
p、 异步=1;
p、 src=t;
s=i.getElementsByTagName(f)[0];
s、 parentNode.insertBefore(p,s);
})(窗口,文档,'脚本','https://cdn.giftup.app/dist/gift-up.js","礼物",;
//轨道转换:
giftup(“转换”,函数(有效载荷){
doThis();
});
`;
构造函数(){}
doThis(){
log(“这不是调用的。”);
}
基本上,giftupHtml用作内部的[innerHTML]。
它呈现得很好,我知道调用了html函数,因为我可以控制台.log(有效负载),但我不能引用我的.ts文件或函数。

实际上这很正常,您正在尝试从脚本窗口访问角度函数。您无法正常访问,但有一些解决方法
但我真的很感兴趣的是你为什么要这样做?

事实上这很正常,你试图从脚本窗口访问角度函数,你不能正常地这样做,但有一些解决办法
但我真的很感兴趣的是,你这么做的原因是什么?

你在Angular zone之外调用的任何东西都需要包装在来自ngZone的调用中。并且确保你使用箭头函数,以便对它的引用保留为组件

constructor(ngZone: NgZone) {
  window['doThis'] = () => {
    ngZone.run(() => {
      // Now you have full access to the component here
    });
  };
}

ngOnDestroy() {
  delete window['doThis'];
}

在Angular zone之外调用的任何东西都需要包装在来自ngZone的调用中。请确保使用箭头函数,以便对该区域的引用保留为组件

constructor(ngZone: NgZone) {
  window['doThis'] = () => {
    ngZone.run(() => {
      // Now you have full access to the component here
    });
  };
}

ngOnDestroy() {
  delete window['doThis'];
}

谢谢你的链接!我正在网站上集成一个第三方表单,我无法访问它的值,因为它是一个iframe(来自另一个域)。因此,当流程完成时,他们会调用一个函数,让我访问订单的有效负载。由于我们跟踪我工作的分析,我们希望调用一个函数,将部分有效负载发送给分析。您能接受它作为正确答案吗?如果它对您有所帮助,请提前感谢这是一个相当新的问题,因此我将稍等,看看re是一个更好的答案。谢谢你的链接!我正在网站上集成一个第三方表单,我无法访问它的值,因为它是一个iframe(来自另一个域)。因此,当流程完成时,他们会调用一个函数,让我访问订单的有效负载。由于我们跟踪我工作的分析,我们希望调用一个函数,将部分有效负载发送给分析。您能接受它作为正确答案吗?如果它对您有所帮助,请提前感谢这是一个相当新的问题,因此我将稍等,看看re是一个更好的答案。在你的构造函数中,
window.doThis=this.doThis.bind(this);
说属性doThis在类型window上不存在。window[“doThis']会做这个把戏吗?这意味着在你的构造函数中同样的事情,
window.doThis=this.doThis.bind(this);
说属性doThis在类型window上不存在。will window[”这能起作用吗?意思是一样的