【问题标题】:Angular hidden div dynamically unhiding best practicesAngular hidden div 动态取消隐藏最佳实践
【发布时间】:2018-03-29 11:37:25
【问题描述】:

我正在构建一个带有登录页面的 Angular 应用程序。登录页面包含以下元素:

  • 登录表单
  • 密码忘记表单
  • 密码忘记确认消息
  • 密码重置表单(点击通过电子邮件发送的链接后,您会到达此处)
  • 加载微调器

首先应该显示login form。当您单击forgot my password 链接时,登录表单应该会消失,并且应该会出现password forgot form,用户可以在其中输入他的电子邮件地址并按下按钮来请求新密码。接下来,用户会看到password forgot acknowledge message,并附有说明接下来会发生什么的文字。

当用户点击通过电子邮件发送的链接时,他会再次被重定向到登录页面并显示password reset form,他可以在其中输入所需的密码。

我目前所做的是将所有div依次写入login.component.html page。默认情况下,除了使用(example) *ngIf="forgotpassword" [@fadeInOutRight]login form 之外,所有内容都是隐藏的。然后,根据在页面上单击的按钮或链接,div 使用 Angular Animations 动态地飞入和飞出屏幕。

我想知道这是否是一种好的做法,或者是否应该使用任何其他技术来动态更改页面内容。

非常感谢任何提示。

谢谢!

【问题讨论】:

  • 我通常为每个 div(屏幕)使用单独的页面(带有单独的路由) - 这种方法降低了方法的复杂性。

标签: html angular


【解决方案1】:

您可能应该将路由用于您所描述的目的。看看https://angular.io/guide/router

至少我会这样做。它具有多种优点:

  • 清楚地将代码分离成有凝聚力的组件,服务于一个目的
  • 用户和您现在可以直接访问路线
  • 您不必编写隐藏/切换逻辑,因为 Angluar 已经提供了这一点
  • 清晰的分隔使测试更容易

【讨论】:

  • 如果页面内容只有一小部分需要更改,这是否也有效?当然登录页面也有样式,我不想重复,这也违背了动态内容的目的
  • 是的。只有<router-outlet></router-outlet> 的内容会发生变化。你甚至可以声明子路由。链接的角度文档很好地解释了它。
【解决方案2】:

首先 ngIf 可以解决问题,您还可以考虑使用 [hidden] 属性。不同之处在于 ngIf,您可以在 DOM 中创建和删除元素,而使用 [hidden] 属性您只是隐藏它们。但只要您的用户不会从一种形式切换到另一种形式的垃圾邮件,我认为使用 ngIf 就可以了。

我建议将您的登录页面拆分为组件。例如,一个用于登录表单本身,另一个用于忘记密码表单,等等...... 这样,当用户单击忘记密码按钮时,您只需将她/他引导到相应的组件。

希望有帮助

【讨论】:

    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 2012-09-28
    • 2015-07-08
    • 1970-01-01
    • 2010-11-02
    • 2011-08-18
    • 2015-05-30
    • 2013-05-18
    相关资源
    最近更新 更多