如何等待 HTML 加载直到获取角度数据?

编程


我已被重定向到另一个页面,如下所示

this.router.navigate(['prob/telecomnewdeal'], { queryParams:{ 'companyId': this.selectedCompnay, 'domainId':this.domainId } });

在新页面上

ngOnInit

我得到这样的参数

ngOnInit(): void {
   this.route.queryParams.subscribe(params => {
     this.companyId = +params['companyId'];
     this.domainId = +params['domainId'];
   });

然后我像这样调用 ngOint 中的 API

this.telecomDealService.addNewDeal(this.userEmail, false, this.companyId, this.domainId).subscribe((data: TelecomDealList) => {

       this.dealQuestionsList = data.AssginedTowers[0].Questions;
       let test = this.dealQuestionsList[0].IsHeader
       this.addloadded = true;
       console.log(this.addloadded);
       for (var i = 0; i < data.AssginedTowers[0].Questions.length; i++) {
         if (data.AssginedTowers[0].Questions[i].listAnswerOptions != null) {

           this.drpoption = data.AssginedTowers[0].Questions[i].listAnswerOptions;
           this.dealQuestionsList[i].listAnswerOptions = [];
           for (var j = 0; j < Object.entries(this.drpoption).length; j++) {
             let tempfilter: Item;
             tempfilter = {
               text: Object.entries(this.drpoption)[0][0],
               value: Object.entries(this.drpoption)[0][0]
             };

             this.dealQuestionsList[i].listAnswerOptions.push(tempfilter);
           }

         }
       }


       this.spinner.hide();




       });

但我的 HTML 在我从 API 获取数据之前加载了数据

从API获取数据后如何加载HTML

我尝试过的:

无法理解这个概念

解决方案1

我明白这是一个较老的问题,但非常值得解决为什么这里存在问题。 发帖者表示,他们希望等到 API 返回数据后再加载特定页面的 HTML。 从技术上讲,您可能会认为通过将检索数据的调用作为阻塞同步调用来实现这一点是可能的,但在 JavaScript 应用程序中这是不可能的,因为它是单线程系统。 API 调用实际上是承诺从服务器获取响应中的数据,然后可以采取行动。

那么,既然我们知道页面是异步的,那么我们如何隐藏页面上的内容,直到数据返回。 典型的机制是使用加载的变量,该变量仅在返回数据时设置为 true。 然后,只需使用 ngIf 在加载为 true 时显示数据即可。

コメント

タイトルとURLをコピーしました