我正在使用服务将数据从组件发送到其他组件。
我的服务如下
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);
}
在控制台打印[]上方,如何从服务中获取指定值?
答案 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"];