在我们的 angular2 Typescript 应用程序中,我们使用路由器。我们的组件非常通用,它们的行为会根据从路由器获得的参数而发生巨大变化。
该应用程序处于早期开发阶段,我所指的行为最近已被观察到。我不确定这是因为代码更改还是其中一个库发生了重大更改。
考虑一个名为 的组件List
。它从上下文(路由、包装组件等)中获取一些信息,例如它应该显示的实体类型。
现在,当我更改路线时,List
不会重新实例化组件,但会更新其参数。由于我使用这些参数ngOnInit
来设置组件,因此以后的更改将无效。
我知道我可以使用变更检测来解决这个问题,但我宁愿不这样做。原因是这将使开发人员更容易引入回归错误(例如:转到人员列表,然后做某事,转到订单列表,不应该存在的东西),而这些错误更难发现,测试和重现。它们更有可能泄漏到生产中。
当路由发生变化时,如何强制 Angular 重新创建 List 组件。
更多观察:在路由器中,如果我导航到不显示 List 组件的路由,然后返回 List,则重新实例化该组件。