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 } ); } ); 

你只需要嵌套其他的可观察物体,所以一旦第一次完成它就会被调用。