Как использовать HashLocationStrategy для маршрутизатора в angular2-beta.20 в dart?

Я пытался использовать роутер в angular2-beta.20 в Dart с HashLocationStrategy. Но я не смог найти никаких документов, кроме эта ссылка на документы angular2-beta.15, которые неполны. В примере показан импорт TypeScript вместо Dart.

Итак, я попытался импортировать package:angular2/router.dart, но Dart Analyzer продолжает жаловаться, что не может найти LocationStrategy и HashLocationStrategy

Также я не знаю, как именно написать импорт, потому что функция предоставления верхнего уровня, как в примере выше, кажется несуществующей. provide(LocationStrategy, {useClass: HashLocationStrategy})


person Benjamin Jesuiter    schedule 23.08.2016    source источник


Ответы (1)


После некоторых исследований я обнаружил следующее:

  • LocationStrategy и HashLocationStrategy теперь являются частью package:angular2/platform/common.dart вместо package:angular2/router.dart.

  • Метод bootstrap()- зависит от платформы, поэтому нам нужно импортировать package:angular2/platform/browser.dart.

  • Нам нужно импортировать package:angular2/router.dart, чтобы ROUTER_PROVIDERS было доступно в методе bootstrap().

Вот пример рабочего кода для инициализации файла дротика:

// needed to import "bootstrap" method
import 'package:angular2/platform/browser.dart';

// needed to import LocationStrategy and HashLocationStrategy
import 'package:angular2/platform/common.dart';

// needed for Provider class
import 'package:angular2/angular2.dart';

// needed to import ROUTER_PROVIDERS
import 'package:angular2/router.dart'; 

// import your app_component as root component for angular2
import 'app_component.dart';

void main() {
  bootstrap(AppComponent, [
    ROUTER_PROVIDERS,
    const Provider(LocationStrategy, useClass: HashLocationStrategy)
  ]);
}

Надеюсь, это кому-нибудь поможет! :)

person Benjamin Jesuiter    schedule 23.08.2016