angular - 从 DataService Angular/TypeScript 中删除项目
问题描述
我正在尝试从我的 dataService 中删除一个项目,并更新所有组件但是我遇到了问题,无论我尝试什么,我都无法从 dataService 中删除该项目并更新正文组件。我在这里想念什么?我是否需要使用 body components 构造函数更改任何内容?谢谢你。
app.component.html
<app-header></app-header>
<app-footer></app-footer>
<app-body></app-body>
页脚.component.ts
import { DataService } from '../data.service';
nominations = [];
constructor(private dataService: DataService) {
this.dataService.nominations$.subscribe(noms => this.nominations.push(noms));
this.nominations.splice(0, 1);
}
remove(indx: number){
//remove movie from array in footer
this.nominations.splice(indx, 1);
//remove movie from dataService
this.dataService.removeNomination(indx);
}
数据服务.ts
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class DataService {
private nominations = new BehaviorSubject<any>([]);
nominations$ = this.nominations.asObservable();
constructor() {
this.addNominations(this.nominations);
}
getNominations(){
return this.nominations;
}
addNominations(nom: Object){
this.nominations.next(nom);
}
removeNomination(index: number){
delete this.nominations$[index];
}
}
body.component.ts
constructor(private http: HttpClient, private dataService: DataService) {
this.dataService.nominations.subscribe(noms => this.nominations.push(noms));
this.nominations.splice(0, 1);
}
解决方案
你不需要提名$
数据服务.ts
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class DataService {
public nominations = new BehaviorSubject<any>([]);
constructor() {
}
setNominations(nom: Object){
this.nominations.next(nom);
}
}
页脚.component.ts
import { DataService } from '../data.service';
nominations = [];
constructor(private dataService: DataService) {
this.dataService.nominations.subscribe(noms => this.nominations.push(noms));
}
remove(indx: number){
//remove movie from array in footer
this.nominations.splice(indx, 1);
//remove movie from dataService
this.dataService.setNominations(this.nominations);
}
然后,您订阅提名的每个地方都会获得拼接提名。
推荐阅读
- design-patterns - 无法将消息推送到客户端(仅拉取)的可扩展、多登录服务器/客户端架构
- angular - PUT 请求失败,出现“错误代码 0”和 net::ERR_METHOD_NOT_SUPPORTED(仅限 chrome)
- node.js - 绕过会话存储将会话直接保存到数据库?
- php - 教义一对一单向错误拯救孩子
- python - 在 Pandas 中将字符串值转换为整数值
- python - 对对象字典进行排名的最佳方法是什么?
- clang - 在存在任意宏的情况下,获取 Clang 中 IfStmt 的右括号的 SourceLocation
- python - 如何获得 Keras 激活?
- json - 如何使用 Pandas/python3 将 json 转换为 csv?
- python - 按钮非事件驱动模型