Ionic 5'teki @ ionic / açısal hatadan üye olayı nasıl düzeltilir?


11

İyonik 4'ten İyonik 5'e geçtim, şimdi aşağıdaki hatayı alıyorum:

Src / app / app.component.ts (4,10) içindeki hata: TS2305 hatası: "" / düğüm_modülleri / @ iyonik / açısal / iyonik-açısal "" modülünün dışa aktarılmış 'Olaylar' üyesi yok.

Aşağıdaki içe aktarma satırı soruna neden oluyor:

import { Events, Platform } from '@ionic/angular';

@ionic/angularIonic 5'te üye Etkinliğini hatadan nasıl düzeltebilirim ?


Merhaba, aynı sorunla karşı karşıyayım. Bana göre Ionic 4 olayları sildi. Bunu buldum: stackoverflow.com/questions/58265379/… Belki bu yardımcı olur
Ipad

1
i aynı hata var, bunun için basit bir yedek bulmak için mutlu olurdu. Benim durumumda redux için gitmek istemiyorum.
Fargho

Ben de bunu alıyorum. Bu muazzam, büyük bir değişim gibi görünüyor. Bu İyonik ekip tarafından hiç belgelendi mi? Eğer öyleyse, bunu okumak istiyorum!
John

@Ipad lütfen cevabımı kontrol et.
Shashank Agrawal

@ John, Ionic'in kırılma değişikliği belgelerinde belgelenmiştir. Lütfen cevabımı kontrol et.
Shashank Agrawal

Yanıtlar:


18

Eventsdan @ionic/angularpaket Ionic 5. kaldırılır var Sen Ionic5 içinde kırma değişiklikleri görebilirsiniz burada .

Kırılma değişikliklerinde belirtildiği gibi kullanmalısınız Observables.

Örneğin, aşağıdaki hizmeti oluşturabilirsiniz:

import {Injectable} from '@angular/core';
import {Subject} from 'rxjs';

@Injectable({
    providedIn: 'root'
})
export class GlobalFooService {

    private fooSubject = new Subject<any>();

    publishSomeData(data: any) {
        this.fooSubject.next(data);
    }

    getObservable(): Subject<any> {
        return this.fooSubject;
    }
}

Artık aşağıdaki gibi herhangi bir bileşene abone olabilirsiniz app.component.ts:

@Component({
    selector: 'app-root',
    templateUrl: 'app.component.html',
    styleUrls: ['app.component.scss']
})
export class AppComponent {

    constructor(private globalFooService: GlobalFooService) {
        this.initializeApp();
    }

    initializeApp() {
        // other code

        this.globalFooService.getObservable().subscribe((data) => {
            console.log('Data received', data);
        });
    }
}

Şimdi, etkinliği başka bir bileşenden yayınlamanız yeterlidir:

@Component({
    selector: 'app-home',
    templateUrl: 'home.page.html',
    styleUrls: ['home.page.scss']
})
export class HomePage {

    constructor(private globalFooService: GlobalFooService) {
    }

    onSomeButtonClick() {
        this.globalFooService.publishSomeData({
            foo: 'bar'
        });
    }
}

Bu çok basit bir çözüm / örnek veya alternatifidir, Eventsancak bir konuyla ad alanı olan bir etkinlik yapmak için kodunuzu daha da değiştirebilirsiniz.

Bu konuda size tam özellikli bir çözüm sunabilecek bir blog yazdım, böylece çok daha az kod değişikliği ile uygulamanızı yükseltebilirsiniz.

https://medium.com/wizpanda/dealing-with-breaking-change-in-ionic-5-db3ba711dfcd


0

Etkinlikler kaldırıldı. Gözle görülür bir şekilde yayınlamak ve değeri almak için abone olmak için gözlemlenebilir ve konu davranışını kullanarak kendi hizmetinizi kendi olayınız olarak yapabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.