我的角度应用程序中有以下情况。
案子 :
我有一个自定义输入select
,它基本上做了一些样式和逻辑,并绘制了一个输入列表:
(简化):
<app-select>
<app-option
*ngFor="let country of locations$ | async"
[name]="'i18n.Enum.Country' | translate: { country: country.code }"
[value]="country.code"
></app-option>
</app-select>
在应用程序选择模板中我只是做
<div>
<ng-content></ng-content>
</div>
简单的前:https ://stackblitz.com/edit/angular-pwdm7r?file=src/app/app.component.ts
问题 :
现在,我想*ngFor
用最少的代码做一个几乎可以滚动的东西。
一种方法是每次我想使用虚拟滚动时都这样做。
<app-select>
<cdk-virtual-scroll-viewport>
<app-option
*cdkVirtualFor="let country of locations$ | async"
[name]="'i18n.Enum.Country' | translate: { country: country.code }"
[value]="country.code"
></app-option>
</cdk-virtual-scroll-viewport>
</app-select>
但我试图做的解决方案是cdk-virtual-scroll-viewport
在我的选择器组件中写一个
<div>
<cdk-virtual-scroll-viewport>
<ng-content></ng-content>
</cdk-virtual-scroll-viewport>
</div>
像这样 => https://stackblitz.com/edit/angular-fuw1fu?file=src/app/app.component.html
NullInjectorError:没有 CdkVirtualScrollViewport 的提供者!
因此,我尝试ng-content
仅在存在 cdkVirtualFor 时阅读并附加内容。
https://stackblitz.com/edit/angular-ax3yvu?file=src/app/select/select.component.ts
但我一直收到同样的错误。
有没有办法做到这一点?