Angular中的数组可观察对象需要调用两次才能正常工作
创始人
2024-10-31 10:00:15
0

这个问题通常发生在使用异步数据绑定时,因为数组在异步返回后无法自动更新。为了解决这个问题,我们可以使用RxJS的行为主题(BehaviorSubject)来创建一个可绑定的数组对象。这样一来,只需在初始化时调用一次即可正常工作。

以下是一个示例代码:

import { Component, OnInit } from '@angular/core';
import { BehaviorSubject } from 'rxjs';

interface Person {
  name: string;
  age: number;
}

@Component({
  selector: 'app-person-list',
  template: `
    
{{ person.name }}: {{ person.age }}
` }) export class PersonListComponent implements OnInit { private _people = new BehaviorSubject([]); public get people$() { return this._people.asObservable(); } ngOnInit() { this.fetchPeople(); } private fetchPeople() { // Async API call const people: Person[] = [{ name: 'Alice', age: 30 }, { name: 'Bob', age: 25 }]; this._people.next(people); } }

在这个例子中,我们首先引入了RxJS的行为主题,并定义了一个Person接口。在组件中,我们创建了一个私有的行为主题_people,它的类型是Person数组。我们还定义了一个可观察对象people$,它是_people的asObservable()结果。在fetchPeople()方法中,我们通过异步API调用获取了一个Person数组,并将其传递给_people的next()方法来更新数据。最后,在模板中,我们使用ngFor和async管道来遍历people$可观察对象。

通过这个方法,我们可以避免调用数组可观察对象两次的问题,同时确保我们的数据绑定始终是最新的。

相关内容

热门资讯

揭幕透视!pokemmo内置修... 揭幕透视!pokemmo内置修改器!确实真的是有辅助工具(详细教程)-哔哩哔哩1、进入到pokemm...
分享透视!epoker有透视吗... 分享透视!epoker有透视吗!都是有辅助工具(的确有挂)-哔哩哔哩epoker有透视吗是不是有人用...
解谜透视!红龙poker辅助器... 解谜透视!红龙poker辅助器免费观看!竟然真的有辅助教程(有挂猫腻)-哔哩哔哩1、完成红龙poke...
详细透视!德州圈脚本!总是是有... 详细透视!德州圈脚本!总是是有辅助app(真实有挂)-哔哩哔哩1、金币登录送、破产送、升级送、活动送...
有挂透视!德州局脚本!一贯一直... 有挂透视!德州局脚本!一贯一直总是有辅助教程(存在有挂)-哔哩哔哩德州局脚本能透视中分为三种模型:德...
关于透视!pokemmo脚本最... 您好,pokemmo脚本最新版这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054...
有挂透视!哈糖大菠萝破解器!一... 有挂透视!哈糖大菠萝破解器!一贯一直都是有辅助神器(有挂教学)-哔哩哔哩1、哈糖大菠萝破解器破解器简...
了解透视!拱趴大菠萝挂哪里!果... 了解透视!拱趴大菠萝挂哪里!果然一直都是有辅助攻略(有挂细节)-哔哩哔哩1、很好的工具软件,可以解锁...
必备透视!扑克之星辅助!切实是... 必备透视!扑克之星辅助!切实是有辅助软件(有挂解惑)-哔哩哔哩一、扑克之星辅助游戏安装教程牌型概率发...
必备透视!sohoo竞技联盟辅... 必备透视!sohoo竞技联盟辅助器!总是是有辅助攻略(存在有挂)-哔哩哔哩1)sohoo竞技联盟辅助...