微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我的目标是将数据从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);
    }
}

Component2(接收器):

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正在管理数据.如果需要,您仍然可以处理数据,但最好将其留给Component2.

基本上MyService从Component1接收数据并将其发送给订阅myMethod()方法的任何人.

Component1正在向MyService发送数据,这就是他所做的一切.
Component2订阅了myMethod(),因此每次调用myMethod()时,Component2都会监听并获取myMethod()返回的内容.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐