Angular2 directives Access指令状态并填充ngFor

Angular2 directives Access指令状态并填充ngFor,angular2-directives,Angular2 Directives,我通过服务公开了后端中的设置。将小部件反复连接到设置是非常常见的,因此我创建了一个指令,允许设置将小部件附加到的设置的唯一名称: 我已经把双向装订好了 现在,在表示组的设置中,有一个定义选项的枚举。我想使用绑定设置为孩子们填充ngFor: <dropdown appSetting="uniqueName" #selector> <option *ngFor="let option of selector.setting.options"> 显然,这是行不通的。

我通过服务公开了后端中的设置。将小部件反复连接到设置是非常常见的,因此我创建了一个指令,允许设置将小部件附加到的设置的唯一名称:

我已经把双向装订好了

现在,在表示组的设置中,有一个定义选项的枚举。我想使用绑定设置为孩子们填充
ngFor

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

显然,这是行不通的。我无法访问指令状态。我尝试的大多数事情都以一个未定义的
ngForOf
或精彩的
表达式changedferithasbeencheckeederror
结束。是否有一种干净的方法来利用现有指令填充子指令

(我尝试了一个自定义的
*appFor
,但无法完全使其工作)

更好的答案:

指令具有导出功能,允许引用它们。只需补充:

@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>

{{option}}

原始答案


一个简单的包装器组件完成了这项工作,允许访问模板中任何对象的设置状态:

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

{{option}}

如果有办法避免使用一次性包装,请告诉我。

看起来您提出了一个关于AngularJS(2+)的问题,但您已将此问题标记为AngularJS(1.x)。