当 Ionic 4 中不存在事件时如何 运行 函数

How to run the function when the events doesn't exists in Ionic 4

我在我的 Ionic 4 多语言应用程序中工作,我正在根据所选语言使用 API 获取数据,我为此添加了事件,但问题是当事件值不存在时我要运行默认函数。

这是我的chakapi.service.ts:

getchallenges($id, $lang) {
   return this.http.get(this.apiUrl + 'getChallenges/' + $id + '/' + $lang);
}

在此服务中,我正在获取有关 ID 和所选语言的基本信息。

这是我的tab2.page.ts:

import { Component, OnInit } from '@angular/core';
import { ChakapiService } from './../service/chakapi.service';
import { LoadingController, Events } from '@ionic/angular';
import { Storage } from '@ionic/storage';
@Component({
  selector: 'app-tab2',
  templateUrl: 'tab2.page.html',
  styleUrls: ['tab2.page.scss']
})
export class Tab2Page implements OnInit {
  challenges: any;
  challengesdetails: any;
  constructor(public chakapi: ChakapiService, public loadingController: LoadingController,
    private storage: Storage, public events: Events) { }
  ngOnInit() {
    this.getUserChallenges();
  }
  async getUserChallenges() {
    const loading = await this.loadingController.create({
      message: 'Please Wait',
      duration: 2200,
      translucent: true,
    });
    await loading.present();
    this.storage.get('ID').then((val2) => {
      if (val2) {
        this.events.subscribe('language:select', (datalang) => { // update from login
          if (datalang) {
            this.chakapi.getchallenges(val2, datalang).subscribe(data => {
              this.challenges = data;
              this.challengesdetails = this.challenges.data;
            });
          }
        });
      }
    });
    return await loading.onDidDismiss();
  }
}

在这个 ts 文件中,我正在 运行 宁 API 并从 API 中获取有关 ID 和所选语言的详细信息。

这是我的app.component.ts:

languageSelected: any = 'en';
selectLanguage(selectlang) {
this.events.publish('language:select', selectlang);
}
setLanguage() {
    const defaultLanguage = this.translate.getDefaultLang();
    if (this.languageSelected) {
      console.log(this.languageSelected);
      this.translate.setDefaultLang(this.languageSelected);
      this.translate.use(this.languageSelected);
      this.selectLanguage(this.languageSelected);
    } else {
      this.languageSelected = defaultLanguage;
      this.translate.use(defaultLanguage);
      this.selectLanguage(this.languageSelected);
    }
  }

我默认选择的语言是 'en'。

在这个ts文件中,我正在选择语言。我正在使用事件发送选定的语言并且它工作正常但是当应用程序加载时它不显示任何数据因为事件不存在。

我想在 tab2.page.ts 事件不存在默认语言时 运行 中的函数。

非常感谢任何帮助。

请试试这个。当您 运行 事件将值保存在存储中时,当事件未 运行 时,则从存储中发送值。这将解决您的问题。

在您的 ts 文件中:

this.storage.get('LANG').then((vallang) => {
  if (vallang) {
    this.detailsfetch(vallang);
  }
});

this.events.subscribe('language:select', (data) => { // update from app.component.ts
  if (data) {
    this.detailsfetch(data);
  }
});