【问题标题】:How do I get current ionic mode from code如何从代码中获取当前的离子模式
【发布时间】:2021-02-18 16:16:49
【问题描述】:

我将 Angular 9 与 ionic5 一起使用,我需要从我的打字稿代码中获取当前使用的模式(字符串 mdios,可能与平台不同)。所以我的问题是,如果这可以直接从打字稿代码中实现,而无需从标签 html mode 属性中读取它。

我尝试在Platform styles上查阅官方文档,但这仅考虑CSS内部的使用。

【问题讨论】:

  • md(Android)和ios(Apple)与平台无关?
  • "每个平台都有一个默认模式,但这可以通过全局配置覆盖。" Ionic Modes 。据此,我认为不保证该模式将对应于平台。
  • 您是否尝试过并实际验证了该理论?似乎平台会报告加载的任何内容.....包括对默认配置的覆盖。
  • 为此,您必须使用 ts 中的 mode="{{YourModeVariable}}"。在您的ts 中,您可以定义使用哪个YourModeVariable = 'md | ios';,然后您将知道您正在使用哪种模式并且动态更改。
  • @E.Maggini 不幸的是,当我在app.module.ts 中设置IonicModule.forRoot({mode:'md'}), 时,this.platform.platforms() 仍然返回[ "iphone", "ios", "mobile", "mobileweb" ]

标签: angular ionic-framework ionic5


【解决方案1】:

找到这些东西的最简单方法是查看 Ionic 的源代码,特别是 providers 文件夹。在那里,我找到了以下文件:https://github.com/ionic-team/ionic-framework/blob/master/angular/src/providers/config.ts

该文件公开了Config 提供程序,这将公开应用程序的整个配置,包括mode

请看看这个working Stackblitz demo

import { Component, OnInit } from "@angular/core";
import { Config } from "@ionic/angular";

@Component({
  selector: "app-home",
  templateUrl: "./home.page.html",
  styleUrls: ["./home.page.scss"]
})
export class HomePage implements OnInit {
  public mode: string;

  constructor(private config: Config) {}

  ngOnInit() {
    // Replace the mode in the app.module.ts
    // file to test this
    this.mode = this.config.get("mode");
  }
}

【讨论】:

  • 这很好用,正是我需要的。谢谢!
【解决方案2】:

平台服务可用于获取有关您当前设备的信息。您可以使用平台方法获取与设备关联的所有平台,包括是否正在从平板电脑查看应用程序、是否在移动设备或浏览器上以及确切的平台(iOS、Android 等)。您还可以获得设备的方向,如果它使用从右到左的语言方向等等。有了这些信息,您可以完全自定义您的应用以适应任何设备。

For more information

【讨论】:

  • 谢谢!但是根据Ionic Modes(“每个平台都有一个默认模式,但这可以通过全局配置覆盖。”)不能保证该模式将对应于所使用的平台。还是我搞错了?
猜你喜欢
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
相关资源
最近更新 更多