Доступ к директиве и заполнение ngFor - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть настройки в бэкэнде, предоставляемые через службу.Очень часто подключать виджеты снова и снова к настройкам, поэтому я создал директиву, позволяющую установить уникальное имя настройки для прикрепления виджета к:

<dropdown appSetting="uniqueName">

I 'у нас работает двухстороннее связывание.

Теперь в настройках, которые представляют группы, есть перечисление, определяющее параметры.Я хотел бы использовать настройку границы для заполнения ngFor для детей:

<dropdown appSetting="uniqueName" #selector>
  <option *ngFor="let option of selector.setting.options">

Очевидно, что это не работает.Я не могу получить доступ к директивному состоянию.Большинство из того, что я пробовал, заканчивалось неопределенным ngForOf или замечательным ExpressionChangedAfterItHasBeenCheckedError.Есть ли простой способ использовать существующую директиву для заполнения дочерних элементов?

(я пробовал пользовательский *appFor, но не мог заставить его работать)

1 Ответ

0 голосов
/ 25 апреля 2018

Лучший ответ:

Директивы имеют возможность экспорта, что позволяет ссылаться на них. Просто нужно добавить:

@Directive({
  selector: '[appSetting]',
  exportAs: 'appSetting'
})

Тогда доступ как:

  <dropdown
        appSetting="uniqueName" #varId="appSetting"
        [(ngModel)]="varId.settingValue">
        <option *ngFor="let option of varId.options" [value]="option">{{ option }}</option>
  </dropdown>

Оригинальный ответ


Простой компонент-оболочка выполнил задание, предоставив доступ к состоянию настройки для любого объекта в шаблоне:

<setting-group #setting
  [uniqueName]="foo">
  <dropdown
    [(ngModel)]="setting.settingValue">
    <option *ngFor="let option of setting.options">{{ option }}</option>
  </dropdown>
</setting-group>

Если есть способ избежать одноразовой упаковки для этого, пожалуйста, дайте мне знать.

...