Cách khắc phục sự kiện thành viên từ lỗi @ ionic / góc trong Ionic 5


9

Tôi đã nâng cấp từ Ionic 4 lên Ionic 5, hiện đang gặp lỗi sau:

LRI trong src / app / app.component.ts (4,10): lỗi TS2305: Module '"/ node_modules / @ ionic / angular / ionic-angular"' không có thành viên 'Sự kiện' được xuất.

Dòng nhập sau đang gây ra sự cố:

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

Làm cách nào tôi có thể sửa lỗi Thành viên từ @ionic/angularlỗi trong Ionic 5?


Xin chào, tôi đang đối mặt với cùng một vấn đề. Và đối với tôi, dường như Ionic 4 đã xóa các sự kiện. Tôi đã tìm thấy cái này: stackoverflow.com/questions/58265379/ Từ Có lẽ điều này sẽ giúp
Ipad

1
Tôi có cùng một lỗi, cũng sẽ rất vui khi tìm thấy một sự thay thế đơn giản cho điều đó. Không muốn đi cho redux trong trường hợp của tôi.
Fargho

Tôi cũng vậy, tôi đang nhận được điều này. Điều này có vẻ như một sự thay đổi lớn, phá vỡ. Điều đó đã từng được ghi nhận bởi nhóm Ionic chưa? Nếu vậy, tôi muốn đọc nó!
Giăng

@Ipad hãy kiểm tra câu trả lời của tôi.
Shashank Agrawal

@ John nó được ghi lại trong tài liệu thay đổi đột phá của Ionic. Vui lòng kiểm tra câu trả lời của tôi.
Shashank Agrawal

Câu trả lời:


15

Eventstừ @ionic/angulargói đã bị xóa khỏi Ionic 5. Bạn có thể thấy những thay đổi đột phá trong Ionic5 tại đây .

Như đã đề cập trong các thay đổi đột phá, bạn nên sử dụng Observables.

Ví dụ: bạn có thể tạo dịch vụ sau:

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

Bây giờ, bạn có thể đăng ký trong bất kỳ thành phần nào như 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);
        });
    }
}

Bây giờ, bạn chỉ cần phát ra sự kiện từ một số thành phần khác:

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

Đây là một giải pháp / ví dụ rất đơn giản hoặc thay thế Eventsnhưng bạn có thể điều chỉnh mã của mình hơn nữa để biến nó thành một sự kiện được đặt tên với một chủ đề.

Tôi đã viết một blog về điều này có thể cung cấp cho bạn một giải pháp đầy đủ tính năng để với rất ít thay đổi mã, bạn có thể nâng cấp ứng dụng của mình.

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


0

Sự kiện đã được gỡ bỏ. Bạn có thể tự thực hiện dịch vụ của mình dưới dạng sự kiện bằng cách sử dụng các vật quan sát và hành vi chủ đề để bạn có thể xuất bản lên ovserable và đăng ký để nhận giá trị.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.