我有一些要与整个应用程序共享的数据,因此我创建了这样的服务。

user.service

userDataSource = BehaviorSubject<Array<any>>([]);

userData = this.userDataSource.asObservable();

updateUserData(data) {
    this.userDataSource.next(data);
}

然后在我的组件中,我从api获取一些数据,然后像这样将其发送到userDataSource
constructor(
private: userService: UserService,
private: api: Api
){
}

ngOnInit() {
    this.api.getData()
      .subscribe((data) => {
         this.userService.updateUserData(data);
      })
}

现在一切正常,但是..我希望能够将数据添加到userDataSource内的数组末尾,所以基本上等同于.push,我可以只调用updateUserData()函数并添加更多数据,否则将覆盖该内容目前在那里吗?

任何帮助,将不胜感激

最佳答案

您可以将新方法添加到服务中,例如addData,在其中您可以将以前的数据与新数据进行合并。

import {Injectable} from '@angular/core';
import {BehaviorSubject} from 'rxjs/BehaviorSubject';

@Injectable()
export class UserService {
    userDataSource: BehaviorSubject<Array<any>> = new BehaviorSubject([]);

    userData = this.userDataSource.asObservable();

    updateUserData(data) {
        this.userDataSource.next(data);
    }

    addData(dataObj) {
        const currentValue = this.userDataSource.value;
        const updatedValue = [...currentValue, dataObj];
        this.userDataSource.next(updatedValue);
    }
}

关于javascript - 将数据添加到行为对象数组Angular 5的末尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49525637/

10-12 14:08
查看更多