@Injectable()
export class MyService {
myMethod$: Observable<any>;
private myMethodSubject = new Subject<any>();
constructor() {
this.myMethod$ = this.myMethodSubject.asObservable();
}
myMethod(data) {
console.log(data); // У нас есть данные! Давайте вернем их, чтобы подписчики могли его использовать!
// тут мы можем делать что-нибудь с данными
this.myMethodSubject.next(data);
}
}
组件1(发送者):
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; // И тут тоже мы можем пользоваться нашими данными!
}
);
}
}
解释:
My Service管辖data。如果您愿意,您仍然可以工作data,但最好将其留给Component2. 基本上从订阅. MyService_dataComponent1myMethod ()
服务和组件之间的交互示例:
服务:
组件1(发送者):
组件 2(收件人):
解释:
My Service管辖data。如果您愿意,您仍然可以工作data,但最好将其留给Component2. 基本上从订阅.MyService_dataComponent1myMethod ()Component1发送data到MyService,仅此而已。Component2订阅myMethod (),因此每次myMethod ()调用它时,Component2它都会监听并接收返回的任何内容myMethod ()。从问题Angular 2中获取和翻译的答案将数据从组件发送到服务