我有一个名为select.component (selector: 'app-select') 的组件,它使用 typeahead 搜索用户(为简单起见,我省略了这个)。然后我想通过绑定到 ng-template 中的项目来显示名称和employeeId。
<ng-select>
<ng-template ng-option-tmp let-item="item">
{{item.name}}</br>
{{item.employeeId}}
</ng-template
</ng-select>
由于我们在应用程序中使用了许多这些 ng-select 元素,因此我将 select.component 设置为其他父组件使用的可重用组件。因此,我想让 ng-template 部分动态化并从父组件传入。我已将 select.component 更改为如下所示:
<ng-select>
<ng-template ng-option-tmp let-item="item">
<ng-content></ng-content>
</ng-template
</ng-select>
然后我有user.component,它使用内容投影在 select.component 中填充 ng-template ,如下所示:
<app-select>
{{item.name}}</br>
{{item.employeeId}}
</app-select>
这里的问题是,当内容投影已经将 app-select 的内部 html 传递给 ng-template 时,{{item.name}} 和 {{item.employeeId}} 不会在 ng-template 中进行评估。在项目的下拉列表中,我看到的是 {{item.name}},而不是实际的名称值。
我怎样才能最好地做到这一点?我真的需要父组件能够指定下拉项应该如何显示以使 select.component 完全可重用。
看我的堆栈闪电战