我正在使用混合方法进行从 AngularJS(1.7.0) 到 Angular(11.xx) 的迁移项目。混合应用程序已启动并正在运行。我在路由部分遇到问题,AngularJS 项目使用 Angular UI-Router,对于 Angular,我正在尝试 Angular UI 混合路由器。
问题是我无法在 AngularJS 视图中加载子视图。
-> 根标签视图(index.html):
<div >
<div class="l-content-inner ui-page-view" role="main" data-ui-view></div>
</div>
子标签视图(empty.html):
<div data-ui-view></div>
在这个子级别视图中,尝试加载“data-ui-view”中的子内容:
对于此内容加载,我使用 UI-Hybrid-Router 在 AngularJS 视图中加载 Angular 组件视图,因此出现以下错误:
ERROR Error: [$injector:modulerr] Failed to instantiate module $$UpgradeModule due to:
Error: [$injector:modulerr] Failed to instantiate module AppName due to:
Error: [$injector:modulerr] Failed to instantiate module AppName .properties due to:
Error: State 'clients.property.landing' has a 'views' object. It cannot also have "view properties" at the state level. Move the following properties into a view (in the 'views' object): templateUrl, controller
注意:此状态(“clients.property.landing”)已在多个地方用作根状态。这与 AngularJS UI 路由器完美配合。它已在代码中的多个位置被引用。
请在下面找到混合路由的示例代码:
// Module
import * as ng from 'angular';
import '@uirouter/angular-hybrid';
const deps = ['ui.router.upgrade'];
export const ngModule = ng.module(namespace.MODULE_PROGRAMS, deps);
// Router
function programRouter($stateProvider) {
$stateProvider
.state('clients.property.programs', {
abstract: true,
resolve: {},
templateUrl: TEMPLATE_PATH + '/application/partials/empty.html'
})
.state('clients.property.programs.list', {
url: 'root/123/programs',
component: ProgramListComponent
})
}
export default ngModule.config(programRouter);
// Component Page
import { Component } from '@angular/core';
@Component({
template: '<div>This is Program Page</div>'
})
export class ProgramListComponent {
title = 'Program';
}