angular - ngIf 不工作 Angular 7 第一次之后
问题描述
这是HTML代码
<form class="k-form-inline" [formGroup]="catalogForm" (ngSubmit)="onSubmit()" (keyup.enter)="onSubmit()">
<button class="k-button k-primary" style="width:100px" [disabled]="loading" style="margin-right:15px" >
<span class="k-icon k-i-zoom" style="padding-right: 20px"> </span>Search
</button>
<span *ngIf="loading" class="k-icon k-i-loading" style="font-size: 16px; padding-left:10px"></span>
</form>
在组件上
public loading : boolean = false;
onSubmit() {
this.loading = true;
this.Service.subscribe(res => {this.loading = false;})
}
编辑:这是服务代码。
export class ProductService extends BehaviorSubject<GridDataResult>{
constructor(private http: HttpClient)
{ super(null); }
protected fetch(state: any, searchForm: ProductCatalogSearch,CustomerGroupCode : string): Observable<GridDataResult> {
searchForm.CustomerGroupCode = CustomerGroupCode;
return this.http
.post<any>(this.rootURL + '/product/catalogsearch', searchForm)
.pipe(
map(response => (<GridDataResult>{
data: response,
total: (response as any[]).length
}))
);
}
public query(state: any, searchForm: ProductCatalogSearch, CustomerGroupCode: string): void {
this.fetch(state, searchForm,CustomerGroupCode)
.subscribe(x => super.next(x));
}
}
当我在加载/刷新后第一次单击按钮时,这非常有效。之后,它在随后的点击中停止工作。提交在任何点击中都可以正常工作,由于某种原因“加载”变量没有改变。
我错过了什么吗?
解决方案
尝试实现生命周期钩子 AfterViewChecked 和 detectChanges。这应该有助于从角度检测加载变量的变化。
import { AfterViewChecked, ChangeDetectorRef, Component } from '@angular/core';
...
constructor(private cdref: ChangeDetectorRef)
...
ngAfterViewChecked(): void { this.cdref.detectChanges(); }
推荐阅读
- javascript - 未删除复选框后单击AngularJs单选按钮
- java - PdfDocument 中的中心图像
- javascript - 如何在反应中改变历史对象的状态?
- c# - 如何 Cefsharp 'callbak' 是 pause() 和 resume()?
- python - 用图像和音乐文件编译 pygame 多个脚本
- javascript - Bootstrap 问题(使用 React)
- arrays - 根据其他列的最大值显示单元格内容,如果高于 Google 表格中的数字
- r - 如何找到矩阵每一行的最小值和最大值?
- android - 安卓。如何显示单选按钮的圆圈
- html - HTML - 如何在确保侧面图像保持静止的同时定义垂直滚动的特定区域?