Angular2:当子属性更改时更新Observable(嵌套的observables)

时间:2016-04-17 12:09:13

标签: angular rxjs

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

  • 项目
  • 用户

项目有很多用户。所以我编写了一个使用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;
}

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

我希望你理解我的问题。

提前谢谢

1 个答案:

答案 0 :(得分:0)

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

你在哪里存放这些物品?您使用的是@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