angular - ionic 深层链接

标签 angular typescript ionic3 deep-linking

我已经使用深度链接创建了我的第一个 Ionic 应用程序。 不得不放弃 lazy-loading with deep links目前... 但是当您导航到其他地方(例如返回主页)时,URL 仍然存在的方式让我感到困惑。人们如何解决这个问题?只是做某种 URL 重写? 还是这样做可能会破坏其他东西? 看来您也无法轻易清除该 URL,因为它会再次出现。

我看过 Ionic blog ,以及Github issues中的热烈讨论关于行为。

似乎 @IonicPage 提供了对自定义内容的一些控制,但这仅适用于延迟加载/模块,对吗?还是可以在不延迟加载的情况下使用注解?

任何关于如何最好地使用它的建议都将不胜感激。

我还注意到其他一些奇怪的行为,因为我用来保存对主页的引用的数据结构变得未定义,即使它是作为常量导出的。这是应用程序启动时的初始 rootNav。 我不得不做一个笨拙的 hack 来解决它,为它调节

if (page.home != undefined) { //Bug in Ionic perhaps
   this.nav.setRoot(HomePage, params)
   .catch((err: any) => {
          console.log(`Didn't set HOME root: ${err}`);
   }); 
} else {
   this.nav.setRoot(page.component, params)
   .catch((err: any) => {
          console.log(`Didn't set nav root: ${err}`);
    });
}

Chrome console.log Chrome console.log

PageInterface 数据结构 Page Interface

丢失“主页”的常量部分,在我导入的类的组件键中。 Code that lost component

这是别人经历过的吗?我没有看到任何建议或明显的错误。干杯。

最佳答案

首先,ionic 中的导航自 3.6.0 版(尤其是带有选项卡的版本)以来存在很多问题,他们重构了生成 URL 的方式(现在它们更具可读性)。正如您已经提到的,github 上有许多 Unresolved 问题,根据团队的说法,这些问题将在接下来的几周内得到修复(他们目前非常忙于重构 ionic v4 的整个框架)。

回答有关 IonicPage 装饰器的问题: 您也可以在不延迟加载页面的情况下使用它: 在您的主模块 app.module.ts 中添加以下内容:

imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp, {
      preloadModules: true
    })
],

preloadModules: true 告诉 ionic 你想急切地加载你的页面(而不是懒惰)。 在您的 IonicPage 装饰器中,您可以配置模块在启动时加载的优先级:

@IonicPage({
  name: 'my-page',
  priority: 'high'
})

对于 priority 属性,可以使用值 highlowoffoff 表示页面是延迟加载的。您可以在 documentation 中找到它IonicPage 装饰器。

关于angular - ionic 深层链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45786743/

相关文章:

typescript - 如何配置 Electron 以使用 TypeScript 的 baseUrl

javascript - 列出 Ionic 3 页面上嵌入的 Instagram 帖子

Angular 2 : Testing components with router

json - Angular 2 - 如何使用来自外部文件的 JSON 数据填充局部变量

angular - 删除整行 Angular 2 Material ?

angular - 错误 : Cannot determine the module for class OverlayPortal in --prod

android - 如何使用 ionic 3 @ionic-native/http 在 native HTTP 中传递 FormData?

javascript - Angular Validator 检查输入是否为数字

angular - 如何将使用 Typescript 开发的 Angular 2 应用程序部署到生产环境中?

typescript - 推送管理器 - 更改订阅事件