Почему я не могу назначить логическую переменную внутри Observable? - PullRequest
1 голос
/ 09 мая 2019

Я пытаюсь скрыть один из элементов div один раз после получения данных из Service, 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> get Hides

Однако здесь проблема в том, что переменной не присваивается значение false.Так как я использую в наблюдаемом, это не возможно?

Если нет, как я могу это сделать?Я хочу сделать эту переменную ложной один раз после загрузки данных.

1 Ответ

1 голос
/ 09 мая 2019

Observable будет выполняться, как только вы подпишитесь на него.Вы должны поместить следующую строку в метод подписки как

    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;
    }); 
...