Function Ionic 2-从服务中的控制器调用函数

Function Ionic 2-从服务中的控制器调用函数,function,service,ionic2,Function,Service,Ionic2,我有一个爱奥尼亚2项目,有一个home.html/home.ts页面和一个service connectivity-service.ts页面。服务应该检查用户是在线还是离线。除此之外,在服务中还添加了一些侦听器,用于监视用户是否脱机或联机。使用该服务的每个页面都应该为该服务提供函数,该服务应该被称为onOnline/onOffline 以下是我的connectivity-service.ts代码: import {Injectable} from '@angular/core'; import

我有一个爱奥尼亚2项目,有一个home.html/home.ts页面和一个service connectivity-service.ts页面。服务应该检查用户是在线还是离线。除此之外,在服务中还添加了一些侦听器,用于监视用户是否脱机或联机。使用该服务的每个页面都应该为该服务提供函数,该服务应该被称为onOnline/onOffline

以下是我的connectivity-service.ts代码:

import {Injectable} from '@angular/core';
import { Network } from 'ionic-native';
import { Platform } from 'ionic-angular';

declare var Connection;

@Injectable()
export class ConnectivityService {

    onDevice: boolean;
    onOnlineFunction: any;
    onOfflineFunction: any;

    constructor(public platform: Platform) {
        this.onDevice = this.platform.is('cordova');
    }

    /**
     * Initialise the connectivity service
     * @param onOnlineFunction
     * @param onOfflineFunction
     */
    init(onOnlineFunction = null, onOfflineFunction = null){
        this.onOnlineFunction = onOnlineFunction;
        this.onOfflineFunction = onOfflineFunction;
        if(this.isOnline()){
            if(this.onOnlineFunction){
                this.onOnlineFunction();
            }
        }
        else{
            if(this.onOfflineFunction){
                this.onOfflineFunction();
            }
        }
        this.addConnectivityListeners();
    }

    /**
     * Check if the user is online
     * @return {boolean}
     */
    isOnline(): boolean {
        // Check if the user is on a device or on browser
        if(this.onDevice && Network.type){
            return Network.type !== Connection.NONE;
        }
        else{
            return navigator.onLine;
        }
    }

    /**
     * Watch online oberservable to check if the user comes online
     * @return {Observable<any>}
     */
    watchOnline(){
        return Network.onConnect();
    }

    /**
     * Watch offline oberservable to check if the user goes offline
     * @return {Observable<any>}
     */
    watchOffline() {
        return Network.onDisconnect();
    }

    /**
     * Add connectivity listeners to permanently check if the user goes on- or offline
     */
    addConnectivityListeners(): void {

        let onOnline = () => {

            if(this.onOnlineFunction){
                this.onOnlineFunction();
            }

        };

        let onOffline = () => {

            if(this.onOfflineFunction){
                this.onOfflineFunction();
            }

        };

        this.watchOnline().subscribe(() => {

            onOnline();

        });

        this.watchOffline().subscribe(() => {

            onOffline();

        });

        if(!this.onDevice){
            document.addEventListener('online', onOnline, false);
            document.addEventListener('offline', onOffline, false);
        }

    }

}
现在的问题是服务调用这个函数就像它是服务的一部分一样。因此,如果此函数中使用的服务未导入到连接服务中,则连接服务不起作用。除此之外,home.ts变量的分配不起作用。是否有一种方法可以像在home.ts中调用一样调用connectivity-service.ts中的给定函数?

您需要使用该函数以确保
对象保持组件的功能

this.platform.ready().then(() => {

    this.connectivity.init(this.loadData.bind(this));//here

});
this.platform.ready().then(() => {

    this.connectivity.init(this.loadData.bind(this));//here

});