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

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

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

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

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() метод.

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

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

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

Другие вопросы по тегам