angular - 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。
解决方案
首先,我建议使用 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();
});
}
如果这不起作用,请提供您的模板片段。
推荐阅读
- sql - 具有相同 id 和两个不同值的两行,将第二个值放入另一列
- python - 如何在熊猫中将字典转换为数据框?
- c++ - 在使用邻接矩阵存储的无向图中查找和打印循环
- android - Android:两个依赖,每个依赖同一个组件,触发DexArchiveMergerException
- python - 基数为 10 的 int() 的无效文字:来自 ajax 的表单数据
- django-templates - 如何从 django 获取渲染的模板?-pdfkit
- javascript - JavaScript:将背景图像保存到用户磁盘
- extjs - ExtJS 6——在视图模型中获取存储
- nhibernate - 查询中的 NHibernate 集合属性(非流畅)
- vue.js - vuejs - 在计算内部更改返回值