[提示] AngularDart的路由功能

首先

我会将其留作备忘录。
本文是假设已经创建了一个Web项目来撰写的。

事先准备

我們將創建一個用於登錄的畫面組件,並對該組件進行路由配置。

import 'package:angular/angular.dart';

@Component(
  selector: 'signin',
  templateUrl: 'signin_component.html',
  directives: [coreDirectives],
)
class SigninComponent {
}

<h1>SignIn</h1>

1. 在pubspec.yaml文件中写入angular_router。

dependencies:
  angular: ^5.2.0
  angular_router: ^2.0.0-alpha+19 #追加
$ pub get

编辑main.dart

import 'package:angular/angular.dart';
import 'package:personal_web/app_component.template.dart' as ng;
import 'package:angular_router/angular_router.dart';
import 'main.template.dart' as self;

const useHashLS = false;
@GenerateInjector(
  routerProvidersHash,
)
final InjectorFactory injector = self.injector$Injector;

void main() {
  runApp(ng.AppComponentNgFactory, createInjector: injector);
}


新建了一个名为routes.dart的文件。

import 'package:angular_router/angular_router.dart';
import 'signin/signin_component.template.dart' as signinComponent;

class RoutePaths {
  static final signIn = RoutePath(path: 'signin');
}

class Routes {
  static final all = <RouteDefinition>[
    RouteDefinition(
      routePath: RoutePaths.signIn,
      component: signinComponent.SigninComponentNgFactory,
    ),
  ];
}

在中文中重新表达上述内容:
据说不存在名为signin_component.template.dart的文件,但在构建时会生成一个称为组件工厂的东西。参考文献在这里。

4. 更改 app_component.dart 和 app_component.html 文件

如果URL发生变化,将改变以便显示各自的页面。

import 'package:angular/angular.dart';
import 'package:angular_router/angular_router.dart'; //追加
import 'src/routes.dart'; //追加

@Component(
  selector: 'app-component',
  templateUrl: 'app_component.html',
  directives: [routerDirectives], //追加
  exports: [RoutePaths, Routes] //追加
)
class AppComponent {}
<router-outlet [routes]="Routes.all"></router-outlet>

只需要执行这个了
你可以通过访问http://localhost:8080/#/signin来实现。