0

我们有一个 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 个)。我使用 AngularJS 应用程序创建了一个应用程序,cli并将生成的应用程序与我们的 AngularJS 应用程序合并。

然后我按照https://angular.io/guide/upgrade上的 ngUpgrade 教程进行操作。虽然它已经过时(仍然使用 SystemJS!)我设法启动并运行:我的 AngularJS 应用程序由 Angular 引导。

在上面提到的示例中,我有两个 AngularJS 组件:usermenuitem-list. 他们都使用任意数量的服务。

随着时间的推移,会发生两件事:

  • 我转换usermenu为 Angular 组件,但我没有降级组件
  • 我创建了一个新的 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>
  • 以下模板会引导 Angular 和 AngularJS 组件吗?
  • 还是我需要降级这两个 Angular 组件才能正常工作?

ngUpgrade 指南提到了“AngularJS OWNS the root component”之类的东西。要在 AngularJS 中使用 Angular 组件,您需要对其进行降级。要在 Angular 中使用 AngularJS 组件,需要对其进行升级。但是由于我有三个根组件,它会起作用吗?

我当然试过了,但我无法让它工作。我有一种感觉,AngularJS 拥有的“根组件”不是找到的组件之一,而是应用程序被引导的元素(document在我的例子中)。

有人可以确认这一点,所以我知道降级组件是唯一的方法,或者也许在使用 Angular 和 AngularJS 组件“彼此​​相邻”引导时指出我正确的方向?

4

0 回答 0