Firebase获取下载URL无限循环请求

时间:2019-06-25 11:39:20

标签: angular firebase firebase-storage angularfire2

当尝试从Firebase存储中获取DownloadURL时,我遇到相同的问题,即无限请求 这是Mycode:

我的组件HTML

 <div *ngIf="(geturlimagefromserver() | async)  as imgc ;else loadiing ">
       <img 
            class="card-img-top"
            alt="robot3_image_robot.png"
            [src]="imgc | ''" 
            data-holder-rendered="true"
            style="    margin: 4px;
            width: 246px;
            height: 175px; display: block;"
          /> 
          </div>
          <ng-template #loadiing>

            <div class="text-menuted">Loading image...</div>
          </ng-template>

我的组件组件

geturlimagefromserver():Observable <any>{
  console.log('i get hier infinite loop ');
 return this.RobotService.getMetadata(path);
}
  

我在控制台的无穷大处看到了“我得到无限循环”字样

我的服务

  getMetadata() :Observable <any>{
    const ref = this.storage.ref('myfile/img1');
   return ref.getDownloadURL();}

大问题

是在我调用函数时:

geturlimagefromserver() 在Mycomponent.html中 我从浏览器收到网络中的无限请求

但是当我调用我的函数时:  Mycomponent.component.ts中的getMetadata() 像这样

 this.MyService.getMetadata().subscribe(data=>{
      }) 
      console.log("its work so fun");

  console.log(data);

      }
  

它的工作是如此有趣,他给了消防存储库中的网址下载器

1 个答案:

答案 0 :(得分:0)

您不是处在 infinite 循环中,发生的是每次角度检查DOM时都会调用get Url函数,所以好像是一个无限循环。

出于上述原因,您应该避免直接在html上使用函数,而应在组件上使用它,否则您可以使用管道。

简而言之,firebaseStorage并不是问题,而是changeDetection在Angular中如何工作。