Angularjs 升级到Angular 2.0路由策略
我正在将我的应用程序从Angular 1.X迁移到Angular 2.0,我正在考虑迁移过程中/之后的路由解决方案 我目前正在使用ui路由器,通过Angularjs 升级到Angular 2.0路由策略,angularjs,angular-ui-router,angular,Angularjs,Angular Ui Router,Angular,我正在将我的应用程序从Angular 1.X迁移到Angular 2.0,我正在考虑迁移过程中/之后的路由解决方案 我目前正在使用ui路由器,通过resolve传递每条路由的数据 读了一些书后,我偶然发现。据我所知,新路由器中没有resolve。我现在有两个选择: 继续在我的混合ng1-2应用程序中使用我当前的ui路由器(有可能吗?),并通过路由器的解析获取每条路由的数据。行吗 更改路由并使用新的组件路由器。这将使逐步升级更加困难,因为我必须将当前获取的Angular 1.X数据更改为位于每个控
resolve
传递每条路由的数据
读了一些书后,我偶然发现。据我所知,新路由器中没有resolve
。我现在有两个选择:
解析
获取每条路由的数据。行吗组件路由器
。这将使逐步升级更加困难,因为我必须将当前获取的Angular 1.X数据更改为位于每个控制器/指令内,并且我不会让Angular 2的@CanActivate
等待数据解析谢谢 我在工作中遇到了同样的问题。我尝试了很多东西,但最后我使用了一种服务:
var data = {
'foo': 'bar'
}
export const StateData = {
data: data
};
现在,在我的组件顶部,我可以导入服务:
import { StateData } from '/services/StateService.ts';
然后,我只需执行以下操作即可设置并从服务获取数据:
StateData.data.foo = "something other than bar"
现在,当您切换路由时,可以在构造函数()或afterViewInit()方法中检索新更新的数据
*使用StateService的另一个好处是,只需添加以下方法(您可以随意命名),即可在所有组件之间绑定数据:
您可以通过执行以下操作从dom本身调用此方法:
{{getStateData('foo')}} --> will print out the value "bar"
现在,如果在另一个组件中更改服务中foo的值,它将在dom中更改,因为每次发生更改时都会调用getStateData(),并且服务在页面加载时只加载一次
我相信init和afterViewInit方法是他们没有将resolve添加到新路由器的原因,或者他们还没有发布带有它的版本
我希望这对你有帮助。我不认为使用Angular 1.x+Angular 2.0会很容易,也不会很有趣
我最近在angular 2.0中重建了我的个人网站。代码是公共的,因此您可以查看它。如果您查看contactCard.ts、contact-card.html和StateService.ts,您可以看到它的作用。以下是回购协议:
您的新舍利钥匙在回购协议中可见,不知道是否应该公开:)
{{getStateData('foo')}} --> will print out the value "bar"