Ser*_*nho 3 rxjs subject-observer behaviorsubject angular2-template angular
AsyncPipe与BehaviorSubject一起使用,但是我不想用空数据初始化我的服务,因此我使用Subject intead。
问题是NgFor和asyncPipe无法与Subject一起使用,这是一个问题吗?
这有效:
零件:
export class AppComponent {
foo = new BehaviorSubject<Array<number>>([1,2,3]);
getFoo(){
return this.foo.asObservable();
}
}
Run Code Online (Sandbox Code Playgroud)
模板
<span *ngFor="let e of foo.asObservable() | async">{{e}}</span>
Run Code Online (Sandbox Code Playgroud)
这不起作用:
零件
export class AppComponent {
foo = new Subject<Array<number>>();
constructor(){
setTimeout(() => {
this.foo.next([1,2,3]);
}, 3000);
}
getFoo(){
return this.foo.asObservable();
}
}
Run Code Online (Sandbox Code Playgroud)
模板
<span *ngFor="let e of foo.getFoo() | async">{{e}}</span>
Run Code Online (Sandbox Code Playgroud)
这里的问题是从我的模板中调用方法-这意味着每次运行更改检测时,我都会调用您的getFoo()函数,该函数返回可观察对象的新实例,该实例将重置异步管道。
因此,无论您在NgFor中调用getFoo(),代码都将失败。
Solucion,在组件中创建一个可观察的变量。
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |