Angular 在服务中更改时,项目的角度列表不会更新

Angular 在服务中更改时,项目的角度列表不会更新,angular,service,rxjs,observable,subject,Angular,Service,Rxjs,Observable,Subject,我有两个组件:一个父组件包含添加文件的表单,另一个子组件显示添加的项目(文件)列表。我想在添加一个项目后更新我的项目表,我已订阅,但在添加项目时不检测更改(抱歉我的英语不好),以下是我的代码: 'this.dataSource=resp.files;'不再更新,只在第一次更新一次 解决了的! files.component.ts 导出类文件组件实现OnInit{ 数据源; columnsToDisplay=['name'、'year'、'created_at'、'u id']; expanded

我有两个组件:一个父组件包含添加文件的表单,另一个子组件显示添加的项目(文件)列表。我想在添加一个项目后更新我的项目表,我已订阅,但在添加项目时不检测更改(抱歉我的英语不好),以下是我的代码:

'this.dataSource=resp.files;'不再更新,只在第一次更新一次

解决了的! files.component.ts

导出类文件组件实现OnInit{
数据源;
columnsToDisplay=['name'、'year'、'created_at'、'u id'];
expandedElement:文件|空;
建造师(
公共文件:文件服务
) {}
恩戈尼尼特(){
此._文件.$files.subscribe((resp:any)=>{
这个._file.getFiles();//*******部分解决了我在里面调用getFiles(),但是
//现在不断调用getFiles():/
this.dataSource=resp.files;
});
}
}
add-file.component.ts

send(){
常量newFile={
姓名:this.name,
状态:“activo”,
年份:this.yearCtrl.value,
from\u id:this.selectedFrom.\u id,
职业\u id:此。已选择的职业
};
此._file.newFile(newFile).subscribe((resp:any)=>{
//此._file.getFiles();//*******已删除
控制台日志(resp);
}
},err=>{
控制台日志(err);
};
服务台

@可注入({
providedIn:'根'
})
导出类文件服务{
私有报头;
公共URL=URL;
私有文件=新行为主体([]);
public$files=this.files.asObservable();
建造师(
私有http:HttpClient
) {
this.headers=new-HttpHeaders().set('Content-Type','application/json;charset=utf-8');
//此.getFiles();//*******已删除
}
getFiles(id:String=null){
this._http.get(URL+'/file',{headers:this.headers}).subscribe((resp:any)=>{
返回此.files.next(resp);
});
}
新文件(新文件:任何){
console.log(newFile);
返回此.u http.post(this.URL+'/file',newFile,{headers:this.headers}).subscribe((resp:any)=>{
这个文件名为.getFiles();
});
}
}

我使用的是angular material table,但我的component.ts没有读取服务变量中的更改。

我解决了在创建文件时从父对象调用子对象方法getFile()的问题,使用Subject在每次发送新文件时得到通知

父组件.ts

send(){
常量newFile={
姓名:this.name,
状态:“activo”,
年份:this.yearCtrl.value,
from\u id:this.selectedFrom.\u id,
职业\u id:此。已选择的职业
};
此._file.newFile(newFile).subscribe((resp:any)=>{
this.reloadFiles.next(true);
});
};
父HTML


子组件.ts

@Input()重载:主题;
恩戈尼尼特(){
这个文件名为.getFiles();
这个.reload.subscribe(v=>{
这个文件名为.getFiles();
});
} 
getFiles(){
此._file.getFiles().subscribe((resp:any)=>{
this.dataSource=新MatTableDataSource(相应文件);
});
}
服务台

getFiles(id:String=null){
返回此文件。_http.get(URL+'/file',{headers:this.headers});
}
我不知道是否是正确的方式,但工作良好!
Thx

您不调用任何getFiles或newFile方法,因此$files永远不会更新!sry在我的第二个组件中,我会这样做,现在我会更新您是否需要服务中的主题/可观察对象?我会首先尝试通过直接返回
get()
post()的结果来让此应用程序工作
来自该服务。我有两个单独的组件,一个用于添加表单,另一个用于显示文件表。我希望在添加项目时更新表您已将行为主题的初始值设置为[],并且在ngOnInit中您正在尝试访问文件(resp.files)从$files observable发出的值。确保您正在将预期值传递给服务的getfiles方法、数组或包含文件的对象数组中的行为主题。