【发布时间】:2020-11-25 14:22:07
【问题描述】:
当我开始学习 Angular 时,我读过一些博客说使用异步管道更好,因为它会自动取消订阅数据流。所以我愿意
HTML
<div *ngIf="users | async">
<ul>
<li *ngFor="let user of users | async">{{ user.name }}</li>
</ul>
</div>
TS 文件
export class AppComponent implements OnInit {
constructor(private http: HttpClient) {};
users: any;
ngOnInit() {
this.users = this.http.get('https://jsonplaceholder.typicode.com/userss');
console.log(this.users);
}
}
所以在 ngOnInit 方法中控制台日志
console.log(this.users);
给我
Observable {_isScalar: false, source: Observable, operator: MapOperator
我通过异步管道获得了 HTML 中的值,但是如果我需要根据从后端获得的用户在我的组件 - ts 文件中执行一些逻辑。
如果我想要里面的数据,我可以通过订阅来完成。但我不希望这样,因为首先我从异步管道开始,因为我不想手动取消订阅它。
所以在这种情况下,我如何在不订阅的情况下从 observable 中获取值,所以最后当 组件被破坏了我不应该关心退订。
【问题讨论】:
-
我不想转换成promise
-
如果您不想将 this.user 转换为 Promise,您可以创建另一个变量并将用户数据存储在其中。
-
如果转换为承诺,如果唯一能做到这一点,那么好吧......
-
您实际上想对组件中的
users做什么?如果您从模板调用组件中的函数,则可以将模板中的users传递给该函数,并以这种方式访问函数中的用户。