在Angular 4中执行javascript函数

在Angular 4中执行javascript函数

问题描述:

我正在通过Facebook进行身份验证,打开新选项卡并在用户通过身份验证后将用户重定向到端口8080上。然后他被重定向回应用程序。从那里我想关闭窗口并打开启动窗口window.opener.functionAfterFinish()上的函数,让它知道auth完成。问题是我必须在index.html中具有该功能才能工作。如果我在组件中创建了functionAfterFinish(): void{...},它将不会被调用。在Angular 4中执行javascript函数

我有什么选择?我应该如何把这个功能放在组件中并让它执行?

+0

问题不明确传达的问题,但您可以尝试的Facebook SDK角包装名为[ ngx-facebook](https://github.com/zyra/ngx-facebook)硬编码javascript的实例。 –

那么,我会建议你使用cookies。

  1. 首先,您需要在重定向到新选项卡时创建cookie。 例如:this._cookieService.createCookie('fbCookies', 'success', 3);

  2. 现在,您需要通过在获取身份验证响应的方法中使用设置的时间间隔来检查cookie。 例 -

    let interval = setInterval(function(){ 
            let cookie = this._cookieService.readCookie('fbCookies'); 
            if (cookie === 'success') { 
             newWindow.close(); 
             clearInterval(interval); 
            }else if (cookie === null) { 
              clearInterval(interval); 
              newWindow.close(); 
            } 
           }, 5000); 
    

因此,只要你会得到成功的标签将接近。

+0

我知道这一点,但这不是一个好的解决方案。回调函数是我要做的,但我无法弄清楚如何访问组件中的函数。我只能访问index.html

+0

“但我不知道如何访问组件中的函数”,你到底想说什么?你可以解释一下,或者在这里发布你的代码,这样我可以提供帮助。 – Kamaal

你必须设置你的组件服务或方法的window对象

内,您的服务/组件上:

askFacebook(){ 
    (window as any).functionAfterFinish=this.functionAfterFinish.bind(this); 
    // Do ask facebook 
} 

请务必在角区域中运行的回调。

(对不起,简洁,我回答我的电话。如果您有任何疑问,请不要犹豫,发表评论)