Angular 6 RxJs:尝试将obj作为可观察对象,以便在其他组件中使用 服务 问题
我正试图建立一个可观察的系统,以便从许多组件读取和写入。如上所述;我在服务中设置了observable,但我的组件Angular 6 RxJs:尝试将obj作为可观察对象,以便在其他组件中使用 服务 问题,angular,rxjs6,subject-observer,Angular,Rxjs6,Subject Observer,我正试图建立一个可观察的系统,以便从许多组件读取和写入。如上所述;我在服务中设置了observable,但我的组件getMode()不工作。你知道为什么吗?你的架构是正确的,但我认为你应该使用BehaivourSubject而不是Subject 试试这个: import { BehaviorSubject } from 'rxjs/BehaviorSubject'; 服务 mode: BehaviorSubject<any> = new BehaviorSubject<any
getMode()
不工作。你知道为什么吗?你的架构是正确的,但我认为你应该使用BehaivourSubject
而不是Subject
试试这个:
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
服务
mode: BehaviorSubject<any> = new BehaviorSubject<any>(null);
constructor(public http: HttpClient) {
this.setMode({ // defaults
admin: this.admins.includes(localStorage.getItem("email")),
edit: false,
dev: false
});
}
getMode() {
return this.mode.asObservable();
}
setMode(value) {
this.mode.next(value);
}
mode:BehaviorSubject您的架构是正确的,但我认为您应该使用behavioursubject
而不是Subject
试试这个:
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
服务
mode: BehaviorSubject<any> = new BehaviorSubject<any>(null);
constructor(public http: HttpClient) {
this.setMode({ // defaults
admin: this.admins.includes(localStorage.getItem("email")),
edit: false,
dev: false
});
}
getMode() {
return this.mode.asObservable();
}
setMode(value) {
this.mode.next(value);
}
模式:行为主体
我想这应该行得通
我通过修改叉子做了类似的事情
我想这应该行得通
我通过修改fork做了类似的事情。您可能需要使用ReplaySubject
而不是如何将服务注入到组件中?该服务在getMode模式下工作,但不工作。我不明白你为什么要在订阅之前更新主题。您必须将其类型切换为ReplaySubject
或BehaviorSubject
,以达到所需的效果。主题具有不同的行为,您可能需要使用ReplaySubject
而不是如何将服务注入组件?服务在getMode模式下工作,但该模式不工作。我不明白你为什么要在订阅之前更新主题。您必须将其类型切换为ReplaySubject
或BehaviorSubject
,以达到所需的效果。受试者有不同的行为模式:行为主体=新行为主体()
获取错误预期为1个参数,但得到0。
抱歉,构造函数需要一个参数,但您可以传递null,我的答案中已修复此错误,现在可以使用了。我不知道为什么。很高兴看到关于何时使用主题
和行为主题
的解释。。。不管怎样谢谢你!您可以在此处阅读更多信息:摘要是:Subject
仅通知订阅者和BehaviorSubject
通知并发送值mode:BehaviorSubject=new BehaviorSubject()
获取错误预期为1个参数,但得到0。
抱歉,构造函数需要一个参数,但您可以传递null,我的答案中已修复此错误,现在可以使用了。我不知道为什么。很高兴看到关于何时使用主题
和行为主题
的解释。。。不管怎样谢谢你!您可以在此处阅读更多信息:摘要是:Subject
仅通知订阅者和BehaviorSubject
通知并发送值
editToggle(e) {
this.mode.edit = e.target.checked; // err: cant edit `mode` because it
// never set.
this.bcAuthService.setMode(e.target.checked);
}