Angular 2 Service未返回分配的值

时间:2017-11-10 08:06:12

标签: angular

我正在使用服务将数据从组件发送到其他组件。

我的服务如下

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

@Injectable()
export class HomeService {
    values = new Array();

    setValues(values): void {
        this.values = values;
    }

    getValues(): any[] {
        return this.values;
    }
}

在组件中设置值

setType(type) {
  this.values["plan"] = "HMO";
  this.homeService.setValues(this.values);
}

在其他

获取价值
ngOnInit() {
  this.homeValues = this.homeService.getValues();   
  console.log(this.homeValues);
} 

在控制台打印[]上方,如何从服务中获取指定值?

2 个答案:

答案 0 :(得分:3)

您必须使用Observable

@Injectable()
export class HomeService {
    values:Observable<any> = [];

    setValues(values): void {
        this.values.next(value);
    }

    getValues(): Observable<any> {
        return this.values.getValue();
    }
}

并在您的组件中使用

ngOnInit() {
  this.homeService.values.subscribe(v => this.homeValues = v );   

} 

答案 1 :(得分:0)

你对this.values["plan"] = "HMO";做错了。

这一行会使{plan:'HMO'}

成为对象

因此,当您将此值设置为服务时,它不会像您期望的那样保存数组。

依次获取此值将返回一个空数组。

您可以做的第一个更改是输入setValues

 setValues(values:any[]): void {
        this.values = values;
 }

其次你必须改变我提到的第一行来实际制作数组。

例如:

this.values = ["HMO"];