我有一个服务通过Observable和Subscribe调用组件但是对于我的生活,我看不到组件的任何结果。我的代码如下。该服务和组件已在我的app.module.ts中注册。
@Injectable()
export class MyService {
private messageSource = new Subject<any>();
currentMessage = this.messageSource.asObservable();
constructor() {}
doSomething() {
this.messageSource.next();
console.log(" doSomething .........");
}
}
@Component({
selector: 'angular-loader',
templateUrl: './loader.component.html',
styleUrls: ['./loader.component.css'],
})
export class MyComponent implements OnInit {
private subscription: Subscription;
message:string;
constructor(private myService: MyService) { }
ngOnInit() {
this.myService.currentMessage.subscribe(() => {
alert('(Component2) Method called!');
});
}
}
答案 0 :(得分:0)
它可能取决于你的RxJS版本,但是你可以使用没有值的subject.next()
。
对我来说有两种可能性:
next()
没有做任何事情(我不认为这是问题所在。)doSomething()
方法而且subscribe()
没有正确加载,因此无法接收结果,在这种情况下我建议你检查你的组件是否是正确加载,我也会将订阅从ngOnInit()
移到constructor()
。答案 1 :(得分:0)
什么在您的 doSomething(message: string) {
this.messageSource.next(message);
console.log(" doSomething .........");
}
中添加了什么?
我习惯看到看起来更像这样的东西:
th:inline
然后将消息添加到Observable流中,然后将其广播给您的订阅者。
(但即使没有传递值,它仍然应该播放通知,你应该看到你的警报。)