Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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 在Angular 6/Typescript中声明全局变量_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 在Angular 6/Typescript中声明全局变量

Javascript 在Angular 6/Typescript中声明全局变量,javascript,angular,typescript,Javascript,Angular,Typescript,我有两个文件,'Drawer.ts'和'sidenav-open-close.component.ts'componenet 我需要在这两者之间共享一个变量,在'Drawer.ts'中可以选择更改它的值,'sidenav-open-close.component.ts'将相应地执行操作 我试着用这个方法- 并创建了一个名为globals.ts的文件,其中包含以下内容: 'use strict'; export var diffMode : boolean = false; 并将其作为myGlo

我有两个文件,
'Drawer.ts'
'sidenav-open-close.component.ts'
componenet

我需要在这两者之间共享一个变量,在
'Drawer.ts'
中可以选择更改它的值,
'sidenav-open-close.component.ts'
将相应地执行操作

我试着用这个方法- 并创建了一个名为globals.ts的文件,其中包含以下内容:

'use strict';
export var diffMode : boolean = false;
并将其作为myGlobals从“./src/globals.ts”导入到两个文件中

我设法读取了diffMode,但当试图通过
'Drawer.ts'
进行设置时,出现以下错误:

ERROR TypeError: Cannot set property diffMode of [object Object] which has 
only a getter
感谢您的帮助。

对于TypeScript现在使用的JavaScript模块(也称为“ESM”,用于ECMAScript模块),导入是导出的只读视图,这就是为什么您不能从定义它的模块外部写入
diffMode

如果需要从其他模块写入,可以公开函数以设置其值:

'use strict';
export var diffMode : boolean = false;
export function setDiffMode(flag: boolean) {
    diffMode = flag;
}
…然后从另一个模块调用该函数,而不是直接向其写入

(在JavaScript中,但这并不重要)在plunker上(遗憾的是,堆栈片段不允许使用模块)

main.js

const handle = setInterval(() => {
    const p = document.createElement("p");
    p.appendChild(
        document.createTextNode(`diffMode = ${diffMode}`)
    );
    document.body.appendChild(p);
}, 250);
setTimeout(() => {
    clearInterval(handle);
}, 1000);

export var diffMode = false;
export function setDiffMode(flag) {
    diffMode = flag;
}
import {diffMode, setDiffMode} from "./main.js";

setTimeout(() => {
    setDiffMode(true);
}, 500);
othermod.js

const handle = setInterval(() => {
    const p = document.createElement("p");
    p.appendChild(
        document.createTextNode(`diffMode = ${diffMode}`)
    );
    document.body.appendChild(p);
}, 250);
setTimeout(() => {
    clearInterval(handle);
}, 1000);

export var diffMode = false;
export function setDiffMode(flag) {
    diffMode = flag;
}
import {diffMode, setDiffMode} from "./main.js";

setTimeout(() => {
    setDiffMode(true);
}, 500);
如果您运行它,您将看到
othermod.js
diffMode
所做的更改确实发生了,并被
main.js
的代码观察到



旁注:模块始终处于严格模式,因此您不需要
“使用严格”命令在顶部。

p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>p>W维维、h、h、h、h、h、y、y、y>0>p>p>p>0>0>0>p>p>p>0>0,对该地区的凯凯凯克克克克克克族,本本本本本本研究,该地区,该地区,该地区,该地区,该地区,该地区,本本本本研究研究,该地区,该地区,该地区,该地区,该地区,本本本研究,本研究研究,本本研究,本研究,本本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,本研究,在本研究中,一个城市的城市,一个城市的城市,一个城市的城市,一个城市的城市,一个城市的城市,一个城市的城市,一个城市的城市,一个城市的城市,一个城市的城市,一个城市的,r,r,r,以及其他的城市的城市,r,r,以及其他的城市,r,r,r,r,以及其他的城市的城市,r,r,r,以及其他的城市的城市的一个城市,r,r,r,r,以及以及其他其他其他的城市的城市的城市,r,r,r,r,以及以及其他其他其他,r,r,以及以及其他其他其他的城市的城市的城市,以及以及以及以及以及其他其他的,以及以及其他,以及以及以及以及以及以及以及其他其他其他的一个,以及以及以及以及以及以及以及以及以及以及以及其他的一个,以及以及以及以及以及以及以及以及以及其他其他的,对对对对本本本本本本本本本本本本本?——。谢谢@t.J.Crowder!您是否只更改Drawer.ts中的值?sidenav-open-close.component.ts是Drawer.ts的孩子、兄弟姐妹还是父母?@KhaledShaaban-我相信他/她正试图通过以下方式来做到这一点。我现在正试图避免
服务