gpt4 book ai didi

javascript - 更改不会通过组件传播

转载 作者:行者123 更新时间:2023-12-03 02:55:48 25 4
gpt4 key购买 nike

我有以下组件示例,该组件在单击按钮时切换元素 (div)。问题是第一次单击绝对不会执行任何操作:更改根本不会传播,需要第二次单击才能实现所需的行为。

import { Component } from '@angular/core';

var exec = require('child_process').exec; //electron part

@Component({
selector: 'my-component',
template: `

<button (click)="showDiv()">Toggle Div</button>
<div *ngIf="show" style="width: 50px; height: 50px; background-color: green">
</div>

`
})
export class MyComponent {

private show = false;

public showDiv() {

exec("wmic logicaldisk get caption", function(error, stdout, stderr){
console.log(stdout);
this.show = !this.show;
}.bind(this));

}

}

因此,当我尝试执行 Windows 命令提示符命令(即使用 Electron 包的 wmic Logicaldisk get Caption)并在命令返回其值后更新组件时,就会发生棘手的部分。
在使用 Electron 复制某些文件的情况下 (exec("copy a.txt dir", function(error, stdout, stderr){...})) 并且在操作结束后我的组件需要更新某些状态(假设:文件复制成功!),此解决方案将不起作用。
那么这种方法可能有什么问题呢?

最佳答案

当我们改变任何 Angular 之外的东西时, Angular 不会考虑到它。尝试使用 ngZone (我不知道是否有效)

export class MyComponent {
private show = false;
constructor(private ngZone:NgZone) //<--ID NgZone
public showDiv() {
exec("wmic logicaldisk get caption", function(error, stdout, stderr){
console.log(stdout);
this.ngZone.run(()=>{
this.show = !this.show;
});
}.bind(this));
}
}

关于javascript - 更改不会通过组件传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47629987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com