当尝试从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);
}
它的工作是如此有趣,他给了消防存储库中的网址下载器
答案 0 :(得分:0)
您不是处在 infinite 循环中,发生的是每次角度检查DOM时都会调用get Url函数,所以好像是一个无限循环。
出于上述原因,您应该避免直接在html上使用函数,而应在组件上使用它,否则您可以使用管道。
简而言之,firebaseStorage并不是问题,而是changeDetection在Angular中如何工作。