【问题标题】:Does using Angular 2 router make sense in Ionic 2 application?在 Ionic 2 应用程序中使用 Angular 2 路由器有意义吗?
【发布时间】:2017-06-29 08:32:40
【问题描述】:

我们已经尝试将我们的 Angular 2 应用程序(由我们的朋友编写,因此我们可能不知道所有细节)迁移到 Ionic 2 中。但是,我们还没有设法使其工作,因此提出疑问下面。

  1. Angular 2 路由器可以在 Ionic 2 中工作吗?
  2. 在 Ionic 2 应用程序中使用 Angular 2 路由器是否有意义,或者我们应该直接使用替代方案,例如 DeepLinker

编辑:我不确定当前状态是什么,但我读到 here 说:

«Angular 路由器目前正在进行大量开发和重构。因此,Angular 的路由器目前在 Ionic 中被禁用。»

  1. 在code/metadata/build-script/package.json中哪里是激活路由器的入口点?我们在 NgModule 中有路由,但是当我们访问应用程序的主 URL 或子 URL 时,它似乎没有启动:

    @NgModule({
      declarations: [
        AppComponent,
        TestComponent,
        AgendasListComponent,
        TasksListComponent,
        SnackBarComponent,
        ConfirmationDialog,
        AgendaComponent,
        LoginComponent
      ],
      entryComponents: [
        ConfirmationDialog
      ],
      imports: [
        BrowserModule,
        HttpModule,
        MaterialModule.forRoot(),
        AngularFireModule.initializeApp(firebaseConfig, firebaseAuthConfig),
        RouterModule.forRoot([
        {
          path: '',
          redirectTo: 'agendas',
          pathMatch: 'full',
          canActivate:[ RouterGuardService ]
        },           
        {
          path: 'agendas',
          component: AgendasListComponent,
          canActivate:[ RouterGuardService ]           
        }
        ...
    

【问题讨论】:

  • Ionic 在 Angular 2 上运行,因此代码库将是兼容的。如果您对 ionic 有特定问题,请发布一个可运行的代码示例来演示该问题
  • 谢谢@codeninja。我知道它应该可以工作,但我对 here 所说的关于在 Ionic 中禁用角度路由器表示怀疑:The Angular router is currently under heavy development and refactoring. As a result of this, Angular’s router is currently disabled within Ionic. 不确定是否仍然如此。
  • 也不确定,但是查看他们有关导航的文档,您似乎可以像在 ios 中一样通过将视图推送到导航堆栈来进行导航。如果这不适合您可以选择不使用 ionic 而只使用cordova 或类似的
  • 为什么不使用 ionic 2 的内置导航?
  • 嗯,我想你会花更多的时间让它工作,而不是仅仅使用已经内置的导航系统,它非常完整且易于使用

标签: angular typescript ionic2 angular2-routing ng-modules


【解决方案1】:

建议使用 NavController & Co:https://ionicframework.com/docs/v2/api/navigation/NavController/,而不是使用 Angular 2 路由器。

Ionic 2 还支持Deep Links into your application,正如您自己所指出的那样。您可以在此处阅读官方博客文章:http://blog.ionic.io/deeplinking-in-ionic-apps/

这是https://github.com/driftyco/ionic-plugin-deeplinks 的一个插件,它允许您创建自定义 URL,如果这是您的要求之一,则可以将您的应用程序打开到特定视图。

【讨论】:

    【解决方案2】:

    对于迟到的建议,我深表歉意。我也去过你所在的地方。老实说,Ionic 是一场噩梦。不过很好,直到...

    我们使用 Ionic 的原因是一次开发,多次部署。网络、手机/平板电脑,可能还有 Windows(Linux?)...

    但一想,我们正在构建的应用在网络上看起来很糟糕,就像一个放大的移动应用。我试了一下,想稍微调整一下。但是,我会留下整个最初的想法,不得不维护多个代码库。

    这个,在 UI 部分。但后来我发现随着 Ng2 的到来和发展,Ionic 也选择了引入 NavController,而不是等待(反应式)路由器......这就是事情变得混乱的地方......所以,除了不得不担心两个UI 的代码库,我还必须为 Router / NavController 冲突重写它。

    与此同时,我的目光落在了Minks Gechev's Angular Seed 上,并成功地将 Ionic 碱基与它混合。

    在就 Ionic Github 问题进行了无声讨论之后,超过 15 人分享了我对 NavController 问题的担忧。其中一位 Ionic 核心开发人员试图让我们保持沉默,告诉我们“很快就会解决”,我要求“尽快定义”。他差点把我赶出去。

    与此同时,我只是对Nathan's Angular Advanced Seed 感到刺痛。 Nathan 为 Telerik 工作,后者是开源 Nativescript(现在是一个独立的基金会)背后的驱动程序

    起初,我持怀疑态度,因为 Telerik 倾向于过度承诺。我试过射击它,但它确实更快,而且它不是混合的,它是原生的。

    我自己确实喜欢 flexbox。所以,我会使用它搜索(网络/Windows)用户界面。为什么不是温泉?

    所以,去内森的种子,把温泉放进去。这是前端。后端 - Keycloak 和 vert.x

    【讨论】:

      猜你喜欢
      • 2016-12-29
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 2016-11-04
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      相关资源
      最近更新 更多