Як виправити подія члена з @ ionic / кутової помилки в Ionic 5


11

Я перейшов з Ionic 4 до Ionic 5, тепер отримую таку помилку:

ПОМИЛКА в src / app / app.component.ts (4,10): помилка TS2305: Модуль "" / node_modules / @ ionic / angular / ionic-angular "'не має експортованого члена" Події ".

Наступна лінія імпорту викликає проблему:

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

Як я можу виправити член Event від @ionic/angularпомилки в Ionic 5?


Привіт, я зіткнувся з тією ж проблемою. І мені здається, що Ionic 4 видалив події. Я знайшов це: stackoverflow.com/questions/58265379/… Можливо, це допомагає
Ipad

1
У мене така ж помилка, я також радий знайти просту заміну для цього. Не хочу йти на скорочення в моєму випадку.
Фарго

Я теж це отримую. Це здається масштабною, зривною зміною. Це коли-небудь було задокументовано командою Ionic? Якщо так, я хотів би це прочитати!
Іван

@Ipad, будь ласка, перевір мою відповідь.
Шашанк Агравал

@John це задокументовано в документації про зміну Ionic про зміну. Будь ласка, перевірте мою відповідь.
Шашанк Агравал

Відповіді:


18

Eventsз @ionic/angularпакета, видаленого з Ionic 5. Ви можете побачити переломні зміни в Ionic5 тут .

Як згадується в переломних змінах, вам слід скористатися Observables.

Наприклад, ви можете створити таку послугу:

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;
    }
}

Тепер ви можете підписатися на будь-який компонент, наприклад 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);
        });
    }
}

Тепер ви просто повинні випромінювати подію з іншого компонента:

@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'
        });
    }
}

Це дуже просте рішення / приклад або альтернатива, Eventsале ви можете налаштувати свій код далі, щоб зробити його подією з темою в просторі імен.

Я написав блог про це, який може дати вам повнофункціональне рішення, щоб при дуже меншій зміні коду можна оновити додаток.

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


0

Події видалено Ви можете зробити власну послугу як подію як власну, використовуючи спостереження, так і поведінку теми, щоб ви могли публікувати публікації для публікації та підписатися, щоб отримати значення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.