【发布时间】:2019-10-01 20:38:32
【问题描述】:
我有一个页面组件、一个列表组件和一个详细信息组件(父级到子级层次结构:page->list->detail),我试图通过组件在详细信息组件中获取一个可观察到的页面组件分享。
我尝试通过将 observable 放入 EventEmitter 并将其向上发送来做到这一点,但是,它似乎不起作用。它可能是以下两种情况之一:我错误地发送了 observable,或者我正确地发送了 observable 并且我错误地从 EventEmitter 中提取了它。代码看起来像这样。
详细组件:
@Output() outputHumidityWarning$ = new EventEmitter<Observable<boolean>>();
...
ngOnInit() {
this.outputHumidityWarning$.emit(this.humidityWarning$);
}
湿度警告$ 的类型为 Observable
列表组件模板:
<app-detail (outputHumidityWarning$)="inputHumidityWarning($event)"</app-detail>
列表组件:
private humidityWarning = new Replaysubject<boolean>(1);
...
ngOnInit() {
this.humiditywarning.subscribe(all => console.log(all));
}
...
inputHumidityWarning = function (humidityWarning) {
this.humidityWarning = humidityWarning;
}
我也试过了:
inputHumidityWarning = function (humidityWarning) {
this.humidityWarning.next(humidityWarning);
}
...
inputHumidityWarning = function (humidityWarning) {
this.humidityWarning.next(of(humidityWarning));
}
没有错误,但我不会在控制台上得到任何东西。 当我在设置后 console.log this.humidityWarning 时,我会得到一个 AnonymousSubject。这就是为什么我尝试将其包装为 of()。 当我 console.log(humanityWarning) 我会得到一个 EventEmitter
【问题讨论】:
-
如果我的解决方案不能解决您的问题,请告诉我删除我的答案,如果您可以为其提供 stackblitz 链接,人们可以更好地帮助您
标签: angular angular2-observables eventemitter