簡體   English   中英

Angular 9 帶有 Carousel 和 Service Worker 的 PWA 未注冊

[英]Angular 9 PWA with Carousel and Service worker does not get registered

嘿伙計們,這是一個有點奇怪的情況,

首先,我使用 Angular 9 和 Bootstrap 3.3.5(還不能更新到最新版本),

在主頁上我有 Carousel,我也實現了 angular PWA。

問題是如果我使用 PWA 和輪播,Serviceworker(SW) 不會被重新注冊。 如果我注釋掉它的輪播代碼。 如果我評論 Jquery 它會被注冊,因為這樣輪播不起作用。 同樣的事情也發生在ngx-owl-carousel上,

我這里沒有任何解決方案。 如果您可以提供任何類型的提示或解決方案,那將是一個很大的幫助。 謝謝:) 有趣的發現是,當我單擊輪播時,有時服務人員會以某種方式注冊。 -_- 無論如何,這是我的輪播代碼,

<div class="bloc bgc-white full-width-bloc l-bloc" id="bloc-2">
        <div class="container">
            <div class="row row-no-gutters">
                <div class="col-sm-12">
                    <div id="carousel-1" class="carousel no-shadows slide" data-ride="carousel">
                        <div class="carousel-inner" role="listbox">
                            <div class="item active">
                                <img [attr.src]="sliderData[0].sliderImgUrl" (click)="navigateSliderProd('product',sliderData[0])"  (load)="imageLoaded($event)"/>

                            </div>
                            <div class="item"  *ngFor="let slider of sliderData | slice:1;let i = index">
                                <img [attr.src]="slider.sliderImgUrl" (click)="navigateSliderProd('product',sliderData[i+1])" (load)="imageLoaded($event)"/>

                            </div>
                        </div>
                        <a class="left carousel-control" href="#carousel-1" role="button" data-slide="prev">
                            <span class="fa fa-chevron-left"></span><span class="sr-only">Previous</span>
                        </a>
                        <a class="right carousel-control" href="#carousel-1" role="button" data-slide="next">
                            <span class="fa fa-chevron-right"></span><span class="sr-only">Next</span>
                        </a>
                    </div>
                </div>
            </div>
        </div>
    </div>

ServiceWorkerModule registrationStrategy設置為registerImmediately (或registerWithDelay )。 默認情況下,軟件注冊等到應用程序穩定(沒有未完成的微任務或宏任務)。 輪播中常見的setTimeout會導致應用程序永遠不穩定。

ServiceWorkerModule.register('ngsw-worker.js', {
  enabled: environment.production,
  registrationStrategy: 'registerImmediately',
}),

請注意,Angular 如果仍然不穩定,則在 30 秒后注冊,從而使此操作變得不必要

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM