首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angularjs到angular4到angularjs

Angularjs到angular4到angularjs
EN

Stack Overflow用户
提问于 2018-11-16 16:27:31
回答 1查看 266关注 0票数 8

我有一个应用程序,我正在逐步移植到angular 4。

现在,我有一些在Angular 4中的组件,其他在AngularJS中。我在从angularjs -> angular4 -> angularjs传递时遇到了一个问题。从JS到4的第一次转换非常完美,但是之后,我只能在主屏幕上使用我的Angular 4组件。URL会改变,但是页面不会重定向到Angular JS组件,我的ng-outlet也不会再刷新。

路由器位于angularJS中。

Angular 4组件使用以下命令降级:

代码语言:javascript
复制
import {
    Injectable,
    ModuleWithProviders,
    NgModule
} from '@angular/core';

import {
    APP_MODULE_NAME
} from '../../constants';

declare const angular: angular.IAngularStatic;
import {
    downgradeInjectable,
    downgradeComponent
} from '@angular/upgrade/static';


// Singleton Module
@NgModule()
@Injectable()
export class ComponentHelper {
    constructor() {}

    static forRoot(): ModuleWithProviders {
        return {
            ngModule: ComponentHelper
        }
    }

    public static DowngradeFactory(componentName: string, className: any): void {
        angular.module(APP_MODULE_NAME).factory(componentName, downgradeInjectable(className));
    }

    public static DowngradeDirective(componentName: string, className: any): void {
        angular.module(APP_MODULE_NAME).directive(componentName, downgradeComponent({
            component: className
        }))
    }
}

我在路由器中执行此操作

代码语言:javascript
复制
{
    path: '/pj/:project_id/ds/:datastore_id/list/ng4/all',
    component: 'downgradeNG4',
    name: 'DowngradeNG4'
}, {
    path: '/pj/:project_id/ds/:datastore_id/search/:search_id/list/all',
    name: 'NormalJS',
    component: 'normalJS'
},

在AngularJS中的某些时候,我这样做是为了重定向到NG4组件。

代码语言:javascript
复制
const path = `pj/${self.projectID}/ds/${self.currentDatastoreID}/list/ng4/all`;
$location.path(path);

现在,在angular 4组件中,如果我单击angular JS中的UI菜单,如果浏览器中的路径更改,它不会重定向事件。

并非所有组件/模块都被降级,我应该降级每个服务和子组件吗?或者只是(像现在这样)直接从AngularJS路由器调用的组件?

我应该把它们都降级吗?

EN

回答 1

Stack Overflow用户

发布于 2018-11-23 18:52:16

我以前也参与过这个过程(从angluarjs迁移到angular )。我强烈建议你在angular 6中重写所有的组件(从angular 4到6也有一些基本的改变),它会比这个方法更少的时间。你可以保留你的html和css,只需要最小的改动。

无论如何,如果你仍然坚持你的方式。只需将其划分为单独的部分,这些部分可以独立工作。*您可以在一个页面中同时运行angularjs和angular

如果您需要将数据从angularjs传递到angular,我会使用另一种方法,比如使用localstorage。

无论如何,你的解释真的很难理解问题在哪里,即使是控制台中的错误,角度调试也需要时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53334011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档