Angular 2 View will not update after variable change in subscribe

后端 未结 4 1664
耶瑟儿~
耶瑟儿~ 2020-11-27 04:26

I have a problem where my view will not change when I update my variable in my observable subscription. I am trying to show a loading spinner while I wait for a response fro

4条回答
  •  谎友^
    谎友^ (楼主)
    2020-11-27 04:35

    are you seeing any error on console? This could be due to fact that angular is not running change detection after you have made updates to value. I think you don't need ngZone.run as it will run code outside the angular zone.

    this.questionService.onSubmit(form, this.questions).subscribe( (value) => {
                this.fileLocation = JSON.stringify(value);
                console.log(this.fileLocation);
                this.isRequesting = "false";
                console.log(this.isRequesting);
        });
    

    If due to some reason you need to run this outside Angular zone, then you should inform angular to run a change detection cycle by either of this method.

    • just wrap update of isRequesting in set timeout

      setTimeout( () => this.isRequesting = "false", 0);
      
    • invoking change detection manually

      import {ChangeDetectorRef} from '@angular/core'
      constructor(private ref: ChangeDetectorRef){}
      
      this.questionService.onSubmit(form, this.questions).subscribe( (value)=> {
          //existing code
          console.log(this.isRequesting);
          this.ref.detectChanges();
      });
      

提交回复
热议问题