无法在 angular 中获取和设置 BehaviorSubject 的值
Cannot get and set value to BehaviorSubject in angular
我正在尝试向 BehaviorSubject 添加一个布尔值。但是,当我尝试控制台日志时,它说它是未定义的。我做错了什么?
我是这样声明的。
isDesktopWidth: BehaviorSubject<boolean>;
这就是我的使用方式
changeSideBarWidth() {
if (this.innerWidth > 767) {
this.isDesktopWidth.next(true);
} else {
this.isDesktopWidth.next(false);
}
}
然后在ngOnInit
this.changeSideBarWidth();
console.log(this.isDesktopWidth.value);
但它在控制台中没有显示任何内容。只有一个错误说
Cannot read property 'next' of undefined
您已经分配了变量的类型 isDesktopWidth
但还没有初始化它。尝试
isDesktopWidth = new BehaviorSubject<boolean>(false);
BehaviorSubject
需要用一个值初始化。如果您希望在没有初始值设定项的情况下创建,请使用 Subject
。在那种情况下你可以使用
isDesktopWidth = new Subject<boolean>();
它们之间的另一个区别是 BehaviorSubject
持有一个值。因此,一旦您订阅它,它就会 return 它持有的当前值。 Subject
不保存当前值。当您订阅它时,您将不会收到一个值,直到它发出下一个值。
在未发射的 Subject
上使用 .value
属性 将 return undefined
.
我正在尝试向 BehaviorSubject 添加一个布尔值。但是,当我尝试控制台日志时,它说它是未定义的。我做错了什么?
我是这样声明的。
isDesktopWidth: BehaviorSubject<boolean>;
这就是我的使用方式
changeSideBarWidth() {
if (this.innerWidth > 767) {
this.isDesktopWidth.next(true);
} else {
this.isDesktopWidth.next(false);
}
}
然后在ngOnInit
this.changeSideBarWidth();
console.log(this.isDesktopWidth.value);
但它在控制台中没有显示任何内容。只有一个错误说
Cannot read property 'next' of undefined
您已经分配了变量的类型 isDesktopWidth
但还没有初始化它。尝试
isDesktopWidth = new BehaviorSubject<boolean>(false);
BehaviorSubject
需要用一个值初始化。如果您希望在没有初始值设定项的情况下创建,请使用 Subject
。在那种情况下你可以使用
isDesktopWidth = new Subject<boolean>();
它们之间的另一个区别是 BehaviorSubject
持有一个值。因此,一旦您订阅它,它就会 return 它持有的当前值。 Subject
不保存当前值。当您订阅它时,您将不会收到一个值,直到它发出下一个值。
在未发射的 Subject
上使用 .value
属性 将 return undefined
.