我有一个服务,两个不同的组件可以通过不同的功能对其进行访问。
我有一个getProduct函数,无论何时从组件1调用它,它都会更新p_array
但是当我尝试通过组件2调用的另一个函数返回p_array时,该数组将返回为空。
我也试图将其声明为可观察的,并订阅它仍然没有运气 cart service
答案 0 :(得分:0)
确保在根目录中提供服务,以便两个组件都获得相同的实例。在该服务的Injectable装饰器中,传入providerIn root
app.post('/search', function(req,res){
connection.query('SELECT t.periode, COALESCE(r.r_kwh_penjualan, 0 ) as r_kwh_penjualan, COALESCE(r.r_total_pelanggan, 0 ) as r_total_pelanggan, COALESCE(r.r_total_pendapatan, 0 ) as r_total_pendapatan, t.t_total_pelanggan, t.t_kwh_penjualan, t.prediksi_pendapatan FROM realisasi AS r RIGHT JOIN target_kinerja as t ON t.periode = r.periode WHERE r.periode LIKE "%'+req.query.key+'%" ORDER BY t.periode DESC',
function(err,rows, fields) {
if(err) throw err;
var data=[];
for(i=0;i<rows.length;i++)
{
data.push(rows[i].periode);
}
res.end(JSON.stringify(data));
});
});
,然后确保该服务未出现在任何提供程序列表中。如果其他任何东西正在提供服务,那么您可能会在组件中得到该服务的另一个实例。
答案 1 :(得分:0)
c_array()可能存在问题,因为它每次都返回一个新的observable。因此,订阅可能会起作用。尝试以下
在您的服务中使用发射器。像下面的
export class CartService {
arr_updated= new EventEmitter<any[]>();
p_array: any[] = [];
setProduct(product) {
this.p_array.push(product)
this.arr_updated.emit(this.p_array);
}
}
组件2中的订阅者
ngOnInit() {
this.cartService.arr_updated.subscribe((res) => {
this.c_arr= res;
});
}
希望有帮助