Не проверено, но чтобы дать вам представление:
@Directive({
selector: '[forBs]'
})
export class ForBs<T> extends NgForOf<T> {
@Input()
forBs: BehaviorSubject<NgIterable<T>> = new BehaviorSubject([]);
get ngForOf(): NgIterable<T> {
return this.forBs.getValue();
}
constructor(_viewContainer: ViewContainerRef, _template: TemplateRef<NgForOfContext<T>>, _differs: IterableDiffers) {
super(_viewContainer, _template, _differs);
}
}
Вероятно, у него не будет поддержки шаблона и trackBy ... и, возможно, некоторые другие проблемы с хуками onChanges
и doCheck
.Но опять же, это поможет вам встать на правильный путь.
Использование будет выглядеть так:
<comp *forBs="item$"></comp>
Где
item$ = new BehaviourSubject([]);
Но опять же, вытакже можно просто использовать async
трубу;)
<comp *ngFor="let item of item$ | async"></comp>