angular - PrimeNg TabView 不适用于可观察量

标签 angular observable primeng

我正在尝试通过从服务器获取数据来填充 PrimeNG TabView 选项卡。然而,它们似乎与 Observables 配合得不好。我在这里发布了一个示例:

https://stackblitz.com/edit/primeng-nx7ryc?file=app%2Fapp.component.ts

  • 由于我的 Angular 组件中没有初始项目,因此根本不会显示动态选项卡面板
  • 对于一个初始项目,仅当单击 INITIAL 选项卡面板时才会显示动态选项卡面板

您能否建议解决此问题的方法?

最佳答案

要处理无初始项目的情况,您可以只输入 *ngIf="this.items?.length"在您的<p-tabView>上元素。

要处理无初始项和只有一个初始项的情况,您可以使用 activeIndex <p-tabView>的属性(property):

<p-tabView [activeIndex]="activeIndex"> <----- add [activeIndex] here
    <p-tabPanel *ngFor="let item of items; let i = index" [header]="item.username" [selected]="i == 0">
        [{{item.username}}]
    </p-tabPanel>
</p-tabView>

在数据到达后设置该值将触发 <p-tabView>刷新自身。

所以你的组件看起来像这样:

items = [
  { username: "INITIAL"}
];

activeIndex: number; // <--- declare but don't initialize

constructor(private http: HttpClient) {}

ngOnInit(): void {
  const source = this.get$();
  const subscribe = source.subscribe(result => {
      this.items = result.slice(0,3);
      this.activeIndex = 0; // <---- set to 0 to trigger p-tabView refresh
  });   
}

Here's a fork of your StackBlitz演示这种方法。

关于angular - PrimeNg TabView 不适用于可观察量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64131420/

相关文章:

javascript - observer.complete() 是做什么的?

javascript - knockout : some observables binding but not visible in Safari

css - 数据表中行之间的边距

javascript - 将徽章添加到 angular prime ng split button 下拉列表

angular - 无法绑定(bind)到 'ngForFor',因为它不是 'li' 的已知属性

angular - Http.get().catch 的返回类型是什么?

java - rxjava中如何不断地将数据流式传输到客户端?

javascript - 从对象数组创建 PrimeNG TreeTable json

Angular 2 - 组件继承 - 基类变量未传播到基模板

javascript - 在 Nativescript Angular 中动画后添加新项目到集合时 ngFor 崩溃