【问题标题】:Angular2: Update Observables when child property changes (nested observables)Angular2:当子属性更改时更新 Observables(嵌套的 observables)
【发布时间】:2016-04-17 22:40:16
【问题描述】:

我的项目中有以下数据类型:

  • 项目
  • 用户

一个项目有很多用户。所以我写了一个项目服务,它使用 observables 来更新视图。到目前为止,当创建新项目或删除项目时,一切正常。

现在我想显示分配给特定项目的用户列表。该列表应在添加新用户或删除用户时更新。这在 Angular2 和 RxJS 中如何实现?

class ProjectsService {
    public projects$: Observable<Project[]>;
    private projectsObserver: Observer<Project[]>;
    private dataStore: {
        projects: Project[]
    };

    addProject(p) {
        // Some magic server calls
        this.dataStore.projects.push(p);
        this.projectsObserver.next(this.dataStore.projects);
    }

    addUserToProject(p, u) {
        // Pseudo-Code and server calls
        // -> I want to use observables here
        p.users.push(u);
    }
}

class Projects {
    public users: Array<User>;
}

class User {
    public string userId;
    public string userName;
}

所以基本上我想嵌套两个 observables。这是正确的方法吗?还是有其他最佳做法?

我希望你能理解我的问题。

提前谢谢你

【问题讨论】:

    标签: angular rxjs


    【解决方案1】:

    我认为你的做法是正确的。

    您将这些对象存储在哪里?你在用@ngrx/store吗?

    无论如何,您可能希望将 users 数组放入 *ngFor 循环中,在这种情况下,如果您在读取 ​​observable 时使用 async 管道,您应该会看到一切正常。

    我有一个类似的问题,我的问题是我没有使用异步管道。

    基本上我会这样写:

    <ul>
     <li *ngFor="#user of (project | async)?.users">{{user.name}}</li>
    </ul>
    

    希望对你有帮助

    https://angular.io/docs/ts/latest/guide/pipes.html

    【讨论】:

    • 好的,谢谢。我想通了,学到了很多。异步管道真的很有用。
    猜你喜欢
    • 1970-01-01
    • 2017-01-12
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2019-08-04
    • 1970-01-01
    相关资源
    最近更新 更多