gpt4 book ai didi

javascript - Angular 2 将数据从组件发送到服务

转载 作者:数据小太阳 更新时间:2023-10-29 03:49:42 26 4
gpt4 key购买 nike

我的目标是将数据从 Angular 组件发送到服务并使用服务方法对其进行处理。示例:

export class SomeComponent {
public data: Array<any> = MyData;
public constructor(private myService: MyService) {
this.myService.data = this.data;
}
}

和服务:

@Injectable()
export class TablePageService {
public data: Array<any>;
constructor() {
console.log(this.data);
// undefined
}
}

获取数据是未定义的。如何让它发挥作用?

最佳答案

如果服务和组件之间的交互可以是这样的示例:

服务:

@Injectable()
export class MyService {
myMethod$: Observable<any>;
private myMethodSubject = new Subject<any>();

constructor() {
this.myMethod$ = this.myMethodSubject.asObservable();
}

myMethod(data) {
console.log(data); // I have data! Let's return it so subscribers can use it!
// we can do stuff with data if we want
this.myMethodSubject.next(data);
}
}

Component1(发件人):

export class SomeComponent {
public data: Array<any> = MyData;

public constructor(private myService: MyService) {
this.myService.myMethod(this.data);
}
}

组件 2(接收器):

export class SomeComponent2 {
public data: Array<any> = MyData;

public constructor(private myService: MyService) {
this.myService.myMethod$.subscribe((data) => {
this.data = data; // And he have data here too!
}
);
}
}

解释:

MyService 正在管理数据。如果你愿意,你仍然可以用 data 做一些事情,但最好把它留给 Component2

基本上 MyServiceComponent1 接收 data 并将其发送给订阅方法 myMethod() 的任何人.

Component1 正在将 data 发送到 MyService,这就是他所做的全部。Component2 订阅了 myMethod(),所以每次调用 myMethod() 时,Component2 都会监听并获取无论 myMethod() 返回什么。

关于javascript - Angular 2 将数据从组件发送到服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44066905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com