gpt4 book ai didi

angular - HTML中未发现 Angular 值变化

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

在我的应用程序中,我有一个回调函数,等待 Electron 数据发送回Angular,然后显示更改。我可以更改“值”,但HTML文件中没有显示该值。因此显示了错误的数据。
component.ts中的函数:

    public async startDefault(): Promise<void> {
try {
this.oDefaultLoader.startLoading();
this.setNewvalues("api", {
max: 1,
cur: 0
});
setTimeout((): void => {
this.setNewvalues("api", {
max: 19,
cur: 5
});
}, 6000);
await this.electron.sendIpcPipe("startDefault", async (oData: IIpcChainResponse): Promise<void> => {
console.log(oData);
this.setNewvalues("api", {
max: oData.max,
cur: oData.cur
});

}, this.settings.oSetting);
this.oDefaultLoader.stopLoading();
} catch (oErr) {
this.oDefaultLoader.stopLoading();
console.log(oErr);
}
}

// Background Actions
private setNewvalues(sSet: "api" | "bo", oValues: IProgressObject): void {
this.oDefaultStart = deepMergeObject(this.oDefaultStart, {
[sSet]: oValues
} as IDefaultStart);
console.log(this.oDefaultStart.api);
}
sendIpcPipe函数:
    public async sendIpcPipe<T, U>(sEndpoint: string, fnPipe: (data: T) => Promise<void>, oArgs?: U): Promise<void> {
if (this.electron.isElectronApp) {
return new Promise<void>((resolve: Function, _reject: Function): void => {
const oListener: (_event: Electron.IpcRendererEvent, oResponse: T) => Promise<void> = async (
_event: Electron.IpcRendererEvent,
oResponse: T
): Promise<void> => {
if (oResponse as unknown as number === 0) {
this.electron.ipcRenderer.off(sEndpoint + "Response", oListener);
resolve();
} else {
await fnPipe(oResponse);
}
};
this.electron.ipcRenderer.on(sEndpoint + "Response", oListener);
this.electron.ipcRenderer.send(sEndpoint, oArgs);
});
}
return;
}
仅用于显示对象的HTML代码:
<div>
{{ oDefaultStart.api | json }}
</div>
更新
如果我在 setNewvalues的回调函数之外使用 sendIpcPipe,则可以正常工作。但是外面什么也没有,或者只是有时候有些改变。

最佳答案

应对值(value)变化的最佳方法是使用RXJS的魔力。
我将oDefaultStart设置为BehavioralSubject,然后在HTML中使用异步管道。
如果您不熟悉RXJS,请观看此有用的视频
https://www.youtube.com/watch?v=ewcoEYS85Co

关于angular - HTML中未发现 Angular 值变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62489012/

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