Привязка материала-выберите к моей модели

У меня есть простой вариант использования: у меня есть богатая объектная модель, которую я использую в приложении AngularDart, и я хочу, чтобы компонент показывал мне текущее состояние одного из полей модели, И я хочу вызвать метод для модель при изменении выбора (что в конечном итоге обновит поле, привязанное к ).

Что-то вроде этого:

приложение-component.dart:

@Component(
  selector: 'my-app',
  styleUrls: const ['app_component.css'],
  templateUrl: 'app_component.html',
  directives: const [CORE_DIRECTIVES, materialDirectives],
  providers: const [materialProviders],
)
class AppComponent {
  Model myModel = new MyModel();
  SelectionModel<String> selectModel = new SelectionModel();
}

приложение-component.html:

<material-dropdown-select
   [options]='myModel.listOfOptions'
   [buttonText]='myModel.currentOption'
   [selection]='selectModel'>
   <!-- call myModel.changeOption(selectedOption) when selection changes -->
</material-dropdown-select>

person mjeffw    schedule 12.06.2017    source источник


Ответы (3)


Прикрепите установщик к вашему члену selectModel и запустите там код, а также обновите «реальное» значение (частный член). Конечно, вам понадобится соответствующий геттер.

person Randal Schwartz    schedule 13.06.2017
comment
Я все еще немного запутался... кто вызывает сеттера? - person mjeffw; 13.06.2017
comment
Я знаю, что я, вероятно, туплю, но что-то вроде этого? SelectionModel‹String› _selectModel = new SelectionModel(); SelectionModel‹String› get selectModel { return _selectModel; } установить модель selectModel(SelectionModel‹String›) { _selectModel = модель; _selectModel.selectionChanges.listen(updateSelection); } Если да, то это не работает. Сеттер не вызывается в ответ на изменение выбора. - person mjeffw; 14.06.2017
comment
Возможно, вы ожидаете, что код обновит значение не в том месте жизненного цикла angular. Возможно, webdev.dartlang.org/angular/guide/lifecycle-hooks сделает это яснее. Возможно, вы ищете изменение до того, как оно получит шанс распространиться. - person Randal Schwartz; 15.06.2017
comment
Я помещаю оператор печати в установщик, и он ничего не печатает на консоли. Есть ли минимальный рабочий пример, который вы можете предоставить? - person mjeffw; 16.06.2017

Я надеюсь, что этот живой пример поможет вам. исходный код.

person Tushar Rai    schedule 25.06.2017

person    schedule
comment
Привет, не могли бы вы поделиться своим кодом на github? У меня ошибка: EXCEPTION: Assertion failed: org-dartlang-app:///packages/angular_components/material_select/material_dropdown_select_accessor.dart:118:12 _select.selection == null "Cannot set [selection] when using a Dropdown control value accessor." - person jess; 14.02.2020