我有一些要与整个应用程序共享的数据,因此我创建了这样的服务。
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/