Ionic 3 - 运行时错误无法读取null的属性'scrollToTop'

时间:2017-11-02 08:22:18

标签: angular typescript ionic-framework scroll ionic3

我正在研究Ionic 3的项目。有不同的菜单。在选择菜单时,我只是发布一个事件并更改页面上数组的值。一切正常,但当页面数据发生变化时,滚动条仍保留在前一个位置。我希望每当我从菜单中选择一个项目时,页面应该滚动到顶部。

为此,我正在使用它 -

正在发布选择菜单项的事件。该代码在app.component.ts

上有效
onSelectCourse(slug){
    const loading = this.loadingCtrl.create({
        content: 'Loading Articles'
    });
    loading.present();
    if(slug == 'all'){
        this.postsProvider.listPosts(1)
        .subscribe(data => {
            this.events.publish('posts:listed', data);
            loading.dismiss();
            this.menuCtrl.close();
        });
    }
    else{
        this.postsProvider.listPostsByCategory(slug, 1)
        .subscribe(data => {
            this.events.publish('posts:listed', data);
            loading.dismiss();
            this.menuCtrl.close();
        });
    }
}

在HomePage订阅活动(home.ts) -

export class HomePage {
    posts: any = [];
    pages: number;
    page: number;
    category: string;
    @ViewChild(Content) content: Content;
    constructor(
                private events: Events,
                private postsProvider: PostsProvider,
                private changeRef:ChangeDetectorRef) {
        this.events.subscribe('posts:listed', (data) => {
            this.posts = data.posts;
            this.pages = data.pages;
            this.page = 1;
            this.category = data.category;
            this.changeRef && this.changeRef.detectChanges();
            this.content.scrollToTop();
        });
    }
}

但是在选择项目时,我收到此错误

enter image description here

1 个答案:

答案 0 :(得分:1)

由于SIGUSR2尚未加载,您无法在this.content.scrollToTop()内访问它(例如constructor())。

您可以在此处使用dom生命周期事件。

ionViewDidEnter()