angular度不显示创build的对象,直到我刷新页面
请帮忙,我有一个消息服务,从数据库中获取我的消息并在用户个人资料页面上显示它们。 当我创build或删除邮件时,只能在刷新浏览器时看到更改。
在应用filter按IDsorting之前,页面dynamic更新,为什么filter解除了我的消息数组绑定?
轮廓组件:
export class ProfileComponent implements OnInit { user: User; userId: any; messages: any; constructor(private authService: AuthService, private messageService: MessageService) {} ngOnInit() { this.authService.getUser().subscribe( (user: User) => { this.user = user; this.userId = user.userId; } ); this.messageService.getMessages() .subscribe( (messages: Message[]) => { this.messages = messages.filter(x => x.userId == this.userId); //this.messages = messages; //this works perfect, but shows all users messages } ); } }
看起来像你的第一个API调用( getUser
方法)需要更多的时间,它是在getMessages
方法后完成的。 你应该以某种方式使他们依赖。 您可以将getUser
Observable转换为使用toPromise
方法的承诺。
ngOnInit() { this.authService.getUser() .toPromise() .then( (user: User) => { this.user = user; this.userId = user.userId; } ) .then(() => { this.messageService.getMessages() .subscribe( (messages: Message[]) => { this.messages = messages.filter(x => x.userId == this.userId); } ); }); }
将您的代码更改为:
messages: Array<any> = []; this.authService.getUser().subscribe( (user: User) => { this.user = user; this.userId = user.userId; this.messageService.getMessages() .subscribe( (messages: Message[]) => { this.messages = messages.filter(x => x.userId === this.userId); //this.messages = messages; //this works perfect, but shows all users messages } ); } );
你只需要嵌套其他的可观察物体,所以一旦第一次完成它就会被调用。