java - Angular 火 : How to perform some operations on data before updating template

标签 java angular firebase angularfire2

我正在尝试在将一些数据附加到模板之前修改一些数据。

假设我有以下内容:

@Component({
  selector: 'app-contact',
  templateUrl: './contact.component.html',
  styleUrls: ['./contact.component.css'],
  template: `
  <section>
    <article *ngFor="let item of items | async">
       {{ item | json }}
    </article>
  </section>
  `,
})

export class ContactComponent {
  items: FirebaseListObservable<any[]>;
  constructor(db: AngularFireDatabase) {
    this.items = db.list('items');
  }
}

如何在将每个项目附加到模板之前对其进行处理。

在 Java 中,这将类似于:

ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot d) {
       //here
       ref.child(d.key).addValueEventListener(new ValueEventListener() {

          @Override
          public void onDataChange(DataSnapshot dataSnapshot) {
              //then update template from here.        
          }

          @Override
          public void onCancelled(DatabaseError databaseError) {}
       }); 
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
});

最佳答案

您的数据是可观察的并且异步呈现。

要修改它,您可以使用管道:

<article *ngFor="let item of items | async | myCustomPipe"><article>

我的自定义管道:

export class MyCustomPipe implements PipeTransform {

  transform(items: any[], args?: any): any {
    //do your modifications here
    return items;
  }

}
<小时/>

或者订阅可观察对象并自己执行异步部分:

public items: any[];

constructor(db: AngularFireDatabase) {
  db.list('items').subscribe(items => this.items = this.modifyItems(items));
}

private modifyItems(items: any[]){
  //do your modifications here
  return items;
}

关于java - Angular 火 : How to perform some operations on data before updating template,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45383853/

相关文章:

java - Grails 2.4.5 依赖项解析错误

Java 程序作为 Windows 服务

javascript - 从 Firebase 存储获取的 URL 未显示在 Ionic 3 中的 <ion-img [src]=...> 上

android - 当应用程序在后台使用 firebase 时,使推送通知显示为弹出窗口

java - 为什么我的 android studio 应用程序在运行时会跳过登录和注册页面?

java - 如何避免在这里创建类似对象的冗余实例?

java - 生动的解决方案 JTS

javascript - 从 Angular 6 中的重复控制中获取值

css - Angular 4 - 在 IE 9 和 IE10 中加载内容后加载微调器不会消失

javascript - 组合多个 FirebaseListObservables