从 Angular 中读取和编辑全局 javascript 变量

Read and edit global javascript variable from Angular

我有一个 angular 应用程序,在我的 index.html 标签中有一个变量,如下所示:

<script type="text/javascript">
let global = 5;
</script>

我需要在 angular 组件中读取和编辑此变量的值,但我不知道该怎么做。

我看到如果在 javascript (window.global = 5) 的“window”对象中创建变量然后在angular 组件,但我认为它对我不起作用,因为我需要该变量在外部,如上所述。

可能吗?有什么想法吗?

您可以将 window 变量传递给控制器​​中的范围。

<!DOCTYPE html>
<html>
<script>window.HELLO_MSG = 'Hello,';</script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
{{ wlcmMsg + " " + firstName + " " + lastName }}
</div>

<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
    $scope.wlcmMsg = window.HELLO_MSG;
    $scope.firstName = "John";
    $scope.lastName = "Doe";
});
</script>

</body>
</html>

或者您可以像这里一样注入整个 window 对象: How to inject window into a service?

关键字 declare 来拯救:首先,用 var 声明你的全局(let 不起作用)

<script type="text/javascript">
  var someVar = 5;
</script>

并在 Angular 组件中访问它:

declare var someVar;
// ...
    this.foo = someVar;

https://stackblitz.com/edit/angular-ivy-zjpnzq?file=src%2Fapp%2Fhello.component.ts

最后我使用了 @robin-zigmond 答案的近似值。我在脚本标记中将 let 更改为 var,在我的 angular 组件中,我使用以下方法访问变量:

window["global"]

我可以编辑组件内的值,例如:

window["global"] = 6

此外,我尝试了 @mbojko 答案,它也有效。