如何修复Ionic 5中来自@ ionic / angular错误的成员事件


9

我已经从Ionic 4升级到Ionic 5,现在出现以下错误:

src / app / app.component.ts(4,10)中的错误:错误TS2305:模块'“ / node_modules / @ ionic / angular / ionic-angular”'没有导出的成员'Events'。

以下导入行导致了此问题:

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

如何修复@ionic/angularIonic 5中的错误导致的成员事件?


嗨,我面临着同样的问题。对我来说,似乎Ionic 4删除了这些事件。我发现了这一点: stackoverflow.com/questions/58265379/…也许有帮助
Ipad

1
我有同样的错误,也很乐意找到一个简单的替代品。在我的情况下,不想去做redux。
Fargho

我也正在得到这个。这似乎是一个巨大的突破性变化。离子团队曾经记录过吗?如果是这样,我想读一下!
约翰

@Ipad请检查我的答案。
Shashank Agrawal

@John,它记录在Ionic的重大更改文档中。请检查我的答案。
Shashank Agrawal

Answers:


15

Events@ionic/angular软件包中删除了Ionic5 。您可以在此处查看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

活动已被删除。您可以使用可观察对象和主题行为将自己作为事件的服务作为自己的事件来使用,因此您可以发布到ovserable并订阅以获取值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.