我是 Angular 的新手,并且在 rxjs 和所有正在发生的异步事情上有点挣扎。
一些背景
假设您有一个像 facebook 这样的网站,其中包含个人资料。您可以通过导航至 来访问个人资料website.com/profiles/profileUrl
。同样,当单击配置文件时,您会得到路由到profiles/:profileUrl
Angular 术语。
这是如何实施的?
我路由到PersonProfileComponent
并从后端检索配置文件数据,两者都基于profileUrl
:
组件:
export class PersonProfileComponent implements OnInit {
person: Observable<PersonTO>;
constructor(private route: ActivatedRoute,
private mockDataService: MockPersonService) {}
ngOnInit() {
this.route.params.subscribe(params => {
this.initializePerson(params['profileUrl']);
});
}
initializePerson(profileUrl: string) {
this.mockDataService.getFullPersonByProfilUrl(profileUrl).
subscribe(foundPerson => {
this.person = of(foundPerson);
});
}
}
模板:
<p>
profile works {{(person | async)?.profileUrl}}!
</p>
问题
虽然一切正常,但我确实不喜欢模板“”中的大部分内容(person | async)?.profileUrl
。person 对象可以变得非常大,具有许多属性,我无法想象像这样访问每个属性。就是感觉不对。在仍然使用异步管道的同时有没有办法解决这个问题,因为它会为我处理所有订阅和取消订阅?此外,我感谢任何关于此代码段以及如何更好地实施它的批评!