Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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 将http字符串var从vanilla JS传递到Angular2服务的更好方法_Javascript_Angular - Fatal编程技术网

Javascript 将http字符串var从vanilla JS传递到Angular2服务的更好方法

Javascript 将http字符串var从vanilla JS传递到Angular2服务的更好方法,javascript,angular,Javascript,Angular,是否有更好的方法将HTTP字符串变量从vanilla JavaScript传递到Angular2服务。目前,我正在通过窗口传递它。\uu myVar但是有没有其他方法不使用窗口属性 我尝试使用@HostListener(),但我认为如果在Angular2中的共享服务中使用,它不起作用,但如果在组件中使用,它会起作用 @HostListener('window:js-value', ['$event.detail']) onJsValue(val) { console.log('Host

是否有更好的方法将HTTP字符串变量从vanilla JavaScript传递到Angular2服务。目前,我正在通过
窗口传递它。\uu myVar
但是有没有其他方法不使用
窗口
属性

我尝试使用
@HostListener()
,但我认为如果在Angular2中的
共享服务中使用,它不起作用,但如果在组件中使用,它会起作用

@HostListener('window:js-value', ['$event.detail'])
 onJsValue(val) {
    console.log('HostListener: ', val);
    alert(val);
  }
在我的vanilla JS中,我有这样一个:--我想将
passTheResultToAngular
变量传递给Angular2,以便在共享服务的http请求中使用

这就是我在config.js中的内容

let passTheResultToAngular= 'http://passmetoangularserve.net/api/;
        window.dispatchEvent(new CustomEvent('js-value', { bubbles: true, detail: passTheResultToAngular}));
有没有其他方法将变量从JS传递到Ng2服务

如果变量来自
success ajax调用
,该怎么办

success: function (data) {
        console.log('SMm', nodeApiUrl + data.Results.Value);
        var passTheResultToAngular= data.Results.Value;
    }
在我的打字中:--


Typescript是javascript的超集,因此我们可以直接使用变量

例如,在javascript代码中,我们可以将var
myVar
写为全局变量

在typescript和import语句中,您可以使用如下代码

declare myVar

如果它来自一个
ajax调用
,该怎么办?我获得了
passResultToAngular未定义
我在
typings.d.ts中声明了这个变量
我已经用
success
更新了这个问题,如果它只是一个独立的变量就可以了。但是我需要的实际http字符串来自api端点。不要使用让数据类型使用var passTheResultToAngular=';dispatchEvent(新的CustomEvent('js-value',{bubbles:true,detail:passTheResultToAngular}));是的,我用了var,那只是我问题中的输入错误。我必须设置一个全局
var passTheResultToAngular
并将其设置为
passTheResultToAngular=string
,否则在ng2yes中使用时将不定义它。因为let是词法范围,所以它将在块中使用。如果您在其中定义了它,它将被视为本地变量,您不能访问该函数的外部变量,作为调用端点的全局配置文件。这也将在angular2之外使用。主要是为了更改端点url调用,而无需重新编译整个ng项目。至于“ng2之外”,我在angular项目中有另一个第三方工具,它是vanilla JS,不是构建的,或者不能作为ng2Nope导入,我已经询问了我正在使用的工具的开发团队,他们说如果不重写整个库,就不能在ng2中导入/使用,因为它是一个完整的应用程序(mxGraph)@Claies其mxGraph:)否则,如果它只是ng2,你会建议怎么做?
declare myVar