为什么我不能在Observable中分配布尔变量?

时间:2019-05-09 11:41:15

标签: angular html5 typescript observable angular7

从服务获取数据后,我试图一次隐藏div元素之一,您可以在下面找到HTML代码

<progressbar
                *ngIf="isLoadingBootStockData"
                [value]="100"
                type="default">
</progressbar>

最初,我将变量isLoadingBootStockData分配为false,并在从服务中获取所有数据后将其分配回true。 因此,typeScript代码如下所示:

return this.cseStockService
    .getBootStockMaterials()
      .pipe(
         map((materialStock) => {
         this.isLoadingBootStockData = false;
const MaterialList = this.cseStockService.createCseStockMaterialModels(
                                materialStock,
                                this.model.notification,
                                this.model.listMaterial,
                                CSE_STOCK.BOOT_STOCK
                            );
}).subscribe() 

因此,在上面的代码第5行中,我将从服务中获取数据,并将变量分配给this.isLoadingBootStockData = false; 这样html div <progressBar>...</progressBar>会隐藏

但是,这里的问题是,变量没有赋给false。由于我使用的是可观察的,所以不可能吗?

如果没有,我该怎么办?加载数据后,我想一次将该变量设为false。

1 个答案:

答案 0 :(得分:1)

Observable将在您订阅后执行。您必须在

的subscribe方法中放置以下行
    return this.cseStockService
        .getBootStockMaterials()
          .pipe(
             map((materialStock) => {

    const MaterialList = this.cseStockService.createCseStockMaterialModels(
                                    materialStock,
                                    this.model.notification,
                                    this.model.listMaterial,
                                    CSE_STOCK.BOOT_STOCK
                                );
    }).subscribe((res:any)=>{
       this.isLoadingBootStockData = false;
    });