首页 > 解决方案 > http服务调用后的Nativescript-angular,视图未更新(Angular 5)

问题描述

http 服务调用后的 Nativescript-angular,视图未更新(Angular 5)。

找到下面的代码,我在其中编写了 http 服务调用,然后将响应分配给未在视图页面中更新的视图。如果我执行任何其他事件,例如将鼠标悬停在文本框上,则视图正在更新。 组件.ts 文件

this.orderService.getProductBySKU('DR1056.01534XXL')
    .subscribe(resProduct => {
        this.ngZone.run(() => {
            this.processing = false;                
         });
    }

服务文件

getProductBySKU(sku) {
    const authToken = localStorage.getItem('currentUserToken');
    return this.http.get(this.config.apiUrl + 'get-product-by-sku?sku=' + sku, this.config.basicAuth())
 .map(response => response);

}

注意:默认情况下 this.processing 在构造函数中显示为 True,在服务调用后 this.processing 被分配为 False,但仅显示 True。如果我单击任何文本框或按钮单击,this.processing 在视图中将更改为 False。

标签: angularnativescriptangular2-nativescript

解决方案


首先,我建议使用 HttpClient params 选项来避免潜在的 URL 转义问题:

this.http.get(this.config.apiUrl + 'get-product-by-sku', {...this.config.basicAuth(), params: { sku: sku }})

```

至于处理,请尝试强制更改检测:

constructor(private ref: ChangeDetectorRef) {}
(...)
this.orderService.getProductBySKU('DR1056.01534XXL')
    .subscribe(resProduct => {
        this.ngZone.run(() => {
            this.processing = false;                
            this.ref.detectChanges();
         });
    }

如果这不起作用,请提供您的模板片段。


推荐阅读