将 Angular[2] V3, Dart 1 的路由转换为 Angular 5, Dart 2

Converting routing of Angular[2] V3, Dart 1 to Angular 5, Dart 2

我正忙于从 Dart1 迁移到 Dart2,结果,我不得不将 Angular 从 3 升级到 5。

我在路由迁移上卡住了...

这就是我们在 Angular2 中的内容,与 Angular3 中的内容相同:

@Component(
    ...
)
@RouteConfig(const [

    /*Meta*/
    const Route(path: "/home", component: AppHomeScene,
        name: SceneRoute.APP_HOME_SCENE, useAsDefault: true),
    const Route(path: "/project-home", component: ProjectHomeScene,
        name: SceneRoute.PROJECT_HOME_SCENE,),
    ...

])
class AppBuild implements AfterContentInit, OnDestroy {
    ...
}

在 Angular5 中,我删除了那个 @RouteConfig 块,创建了一个 routes.dart 和一个 paths.dart

import 'package:angular_router/angular_router.dart';
import 'package:appbuild/enum/enums.dart';

class Paths {

    static final home = new RoutePath(path: "home", useAsDefault: true, additionalData: SceneRoute.APP_HOME_SCENE);

    ...
}

import 'package:appbuild/paths.dart';

export 'paths.dart';

class Routes {

    static final all = <RouteDefinition>[

        /*Meta*/
        RouteDefinition(routePath: Paths.home, component: AppHomeScene),

        ...
    ];
}

我目前有 component: AppHomeScene,文档说它的格式应该是 hero_list_template.HeroListComponentNgFactory,

如果我尝试导入,IntelliJ 会将其标记为错误:

import 'component/home/home-scene.template.dart' as 'home-scene-template';

在什么时候为我生成的模板能够执行这样的导入,或者我应该对 HomeScene class 做些什么才能使该模板可导入?

HomeScene 只是一个标准组件,仍处于其 Angular3 格式:

@Component(
    selector: 'home-scene',
    // language=CSS
    styles: const[""" 
        ...
    """
    ],
    // language=HTML
    template: """
        ...
    """,
    providers: const [...],
    directives: const [...]
)
class AppHomeScene extends AppScene implements AfterContentInit, OnDestroy {

    ....

}

template.dart 文件是为每个具有模板的 .dart 文件创建的,第一次构建是在您的应用程序上 运行 之后。 IntelliJ 在分析您的代码之前不知道要编译您的应用程序。

建议您构建您的应用,然后刷新分析结果。