LoginSignup
2
1

More than 5 years have passed since last update.

[Tips]AngularDartのルーティング

Posted at

はじめに

備忘録として残しておきます。
事前にWebのプロジェクトを作っていることを前提に書いています。

前準備

例としてsigin inするための画面のコンポーネントを作成し、そのコンポーネントに対してルーティングできるようにします。

lib/src/signin/signin_component.dart
import 'package:angular/angular.dart';

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

lib/src/signin/signin_component.html
<h1>SignIn</h1>

1. pubspec.yamlにangular_routerを記述

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

2. main.dartを編集

web/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);
}


3. routes.dartを新規作成

lib/src/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が変わったらそれぞれのページを表示するように変更します。

lib/app_component.dart
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 {}
lib/app_component.html
<router-outlet [routes]="Routes.all"></router-outlet>

これであとは実行するだけ
http://localhost:8080/#/signin
でアクセスできます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1