Выбор в выпадающем меню Angular Dart дает ошибку - PullRequest
0 голосов
/ 16 марта 2019

У меня есть компонент с выпадающим меню выбора материала, и когда [(выделение)] имеет тип SingleSelectionModel, я получил ошибку "angular dart Ожидается значение типа" SingleSelectionModel ", но получен один из типа" Term "". Когда это типа Термин, это нормально. Мне нужен SingleSelectionModel для доступа к его потоку изменений и выполнения некоторых операций с выбранным значением.

У меня есть Dart 2.2.0, угловой: ^ 5.2.0, angular_components: ^ 0.11.0.

Может кто-нибудь помочь, как использовать SingleSelectionModel для [(выбор)]?

@Component(
  selector: 'x-plan-edit-rule',
  template: '''
    <material-dropdown-select
        [options]="terms"
        [(selection)]="selectedTerm"
        [buttonText]="buttonText">
    </material-dropdown-select>
  ''',
  directives: const [
    coreDirectives,
    MaterialButtonComponent,
    MaterialDropdownSelectComponent,
  ],
)
class EditPlanRuleComponent implements OnInit {

  @Input() Rule rule;
  SelectionOptions<Term> terms;
  SingleSelectionModel<Term> selectedTerm = SelectionModel<Term>.single(); // GIVES ERROR
  //Term selectedTerm; // WORKS FINE WITHOUT ERROR

  EditPlanRuleComponent();

  @override
  ngOnInit() {
    // List<Term> rule.availableTerms
    terms = SelectionOptions.fromList(rule.availableTerms);
    selectedTerm?.selectionChanges?.listen((_) {
      // do some checks after the selection change
    });
  }


  String get buttonText =>  'Some button text';
}

1 Ответ

0 голосов
/ 16 марта 2019

Наконец я нашел решение, в основном случайно.При использовании

 SingleSelectionModel<Term> selectedTerm = SelectionModel<Term>.single();

привязка шаблона должна быть только [], а не [()], поэтому правильный шаблон -

  template: '''
    <material-dropdown-select
        [options]="terms"
        [selection]="selectedTerm"
        [buttonText]="buttonText">
    </material-dropdown-select>
  ''',
...