繁体   English   中英

订阅不会更新 Angular 中的视图

[英]Subcribe doesn`t update view in Angular

我的 Body.component.ts 中有.subscribe()

ngOnInit(): void {
    this.pizzaSub = this.postService.getPizzas()
          .subscribe((pizzas: IPizza[]) => {
              this.pizzas = pizzas;
          });
}

和服务 post.service.ts 应该更新我的身体视图

getPizzas(params?: Array<number | string>): Observable<IPizza[]> {
  return this.http.get<IPizza[]>(`http://localhost:3000/pizzas?${[params]}`);
}

但是在点击另一个组件时它不会发生

onPizzaClick(pizzaType: number): void {
    this.postService.getPizzas([`category=${pizzaType}`]);
}

我需要在单击另一个组件时更新正文视图中的数据

您没有订阅 onPizzaClick function 中的 Observable:

onPizzaClick(pizzaType: number): void {
    this.postService.getPizzas([`category=${pizzaType}`]).subscribe(
      (pizzas: IPizza[]) => {
             //Do whatever you want with pizzas
          }
 );
}

据我了解,您应该使用主题处理服务内部的数据,每当您收到数据时,您都会更新主题以通知订阅此主题的组件有关新数据的信息。

您的服务

pizzas$ = new Subject();
getPizzas(params?: Array<number | string>): Observable<IPizza[]> {
  return this.http.get<IPizza[]>(`http://localhost:3000/pizzas?${[params]}`);
}

updatePizzas() {
 this.getPizzas().subscribe(pizzas => this.pizza$.next(pizzas))
}

你的组件

ngOnInit(): void {
    this.postService.pizza$.subscribe(pizzas => // Do what you want with your pizzas here);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM