Ошибка поставщика DomPopupSourceFactory при использовании раскрывающегося списка материалов

Я пытаюсь использовать раскрывающийся список материалов, но получаю эту ошибку:

EXCEPTION: No provider found for DomPopupSourceFactory.

MaterialDirectives добавлен в список директив, вызов html прост:

<material-dropdown-select></material-dropdown-select>

Я попробовал angular_components_example, и он работал нормально. Проблема в моем проекте. Я уже пытался очистить .packages и выполнил команду pub get. Ничего не получилось. Я попробовал некоторые другие компоненты материала, и они сработали.


person Jonathan    schedule 13.06.2017    source источник


Ответы (2)


Если вы добавите materialProviders в AppComponent, он должен работать:

@Component(
  selector: 'my-app',
  directives: const <dynamic>[
    CORE_DIRECTIVES,
    materialDirectives,
  ],
  providers: const <dynamic>[
    materialProviders, // <<<<<<<<<<<<<<<<
  ],
)
class AppComponent {...}
person Günter Zöchbauer    schedule 13.06.2017
comment
о, не знал этого. Однако выбор используется компонентом внутри библиотеки. Попробую добавить popupBindings к поставщикам компонентов - person Jonathan; 13.06.2017
comment
это сработало. ржу не могу. Я указываю на это 1 час. Я думаю, что popupBindings в демо-версии следует использовать в выбранной демоверсии, чтобы люди, которые ее собирали, увидели ее быстрее, чем я. Спасибо, Гюнтер =] - person Jonathan; 13.06.2017
comment
Некоторое время назад я тоже немного искал это. - person Günter Zöchbauer; 13.06.2017

Это работает в примере angular_components, потому что компонент уровня приложения включает в себя необходимого поставщика popupBindings.

Если вы не включаете materialProviders в свое приложение, вы можете использовать более конкретного поставщика в своих компонентах.

Вот минимальный шаблон, необходимый для использования material-dropdown-select:

import 'package:angular/angular.dart';
import 'package:angular_components/laminate/popup/module.dart';
import 'package:angular_components/material_select/material_dropdown_select.dart';

@Component(
  selector: 'my-dropdown-select',
  directives: const [
    MaterialDropdownSelectComponent,
  ],
  providers: const [
    popupBindings,
  ],
)
class MyDropdownSelectComponent {}
person mhrst    schedule 01.02.2018