我们有一个AngularJS应用程序。 “主”模板超出了它的范围:它是由CMS生成的。我们不知道页面的外观。只要有AngularJS组件,AngularJS应用程序就会启动。
这不是SPA,我们只会创建交互式组件,直到页面刷新出现为止。
我们使用angular.bootstrap(document, ['App'], { strictDi: true });
精简版:
<html>
<body>
<div>
<usermenu></usermenu>
</div>
<div>
<item-list></item-list>
</div>
</body>
</html>
我们想迁移到Angular(在撰写本文时为6)。我使用cli
创建了一个应用,并将生成的应用与我们的AngularJS应用合并。
然后我按照https://angular.io/guide/upgrade的ngUpgrade教程进行操作。尽管已经过时了(仍然使用SystemJS!),我还是设法启动并运行:我的AngularJS应用程序由Angular引导。
在上述示例中,我有两个AngularJS组件:usermenu
和item-list
。他们俩都使用任意数量的服务。
随着时间的流逝,会发生两件事:
usermenu
转换为Angular组件,但我没有降级该组件signout-button
)考虑我的新模板:
<html>
<body>
<div>
<usermenu></usermenu> <!-- Angular component -->
</div>
<div>
<item-list></item-list> <!-- AngularJS component -->
</div>
<div>
<signout-button></signout-button> <!-- Angular component -->
</div>
</body>
</html>
ngupgrade指南提到了类似“ AngularJS OWNS的根组件”之类的内容。要在AngularJS中使用Angular组件,您需要对其降级。要在Angular中使用AngularJS组件,需要对其进行升级。但是,既然我有三个基本组成部分,它将起作用吗?
我当然尝试过,但是无法使其正常工作。我感到AngularJS拥有的“根组件”不是找到的组件之一,而是应用程序被引导的元素(在我的情况下为document
)。
有人可以确认这一点,所以我知道降级组件是唯一的方法,或者也许可以通过Angular和AngularJS组件“彼此相邻”引导我正确的方向?