我无法访问组件 2 中 rxjs 的主题在组件 1 中设置的条件
I am unable to access condition set up in component-1 by Subject of rxjs in component-2
服务:
import { Injectable } from "@angular/core";
import { Subject } from "rxjs";
@Injectable({
providedIn: "root"
})
export class AdminRoleLocalService {
public newRoleAdded = new Subject<boolean>();
constructor() {}
newRoleAddedEvent() {
this.newRoleAdded.next(true);
}
}
组件 1:
submitAddRoleForm(addRoleForm: AddRoleData) {
this.isFetching = true;
this.roleService.addRoleData(addRoleForm).subscribe(
httpResponse => {
console.log(httpResponse);
this.isFetching = false;
this.roleLocalService.newRoleAddedEvent();
this.router.navigate(["/role-management"]);
},
errorMessage => {
console.log(errorMessage);
this.errorMessageContent(errorMessage);
}
);
}
组件 2:
ngOnInit() {
this.roleLocalService.newRoleAdded.subscribe(flag => {
this.newRoleAddedFlag = flag;
});
}
i am seeing newRoleAddedFlag as undefined where as i am expecting value as True. I am unable to find out where i am seeing. Request you to help me out.
试试
public newRoleAdded = new BehaviorSubject<boolean>(true);
BehaviorSubject
是一个类似于 Subject
的可观察对象。但是你用一个值启动你的可观察对象,当你订阅它时,你会得到最后一个值。
您可以尝试使用
public newRoleAdded = new ReplaySubject<boolean>(1);
在这种情况下,您无需设置初始值,第二个组件将等待 next
方法调用。或者你可以使用
public newRoleAdded = new BehaviorSubject<boolean>(null);
并通过方法访问:
getNewRoleAddedObservable(): Observable<boolean> {
return this.newRoleAdded.pipe(filter(value => value !=null)).asObservable();
}
永远不要暴露主题public这是不好的做法。
服务:
import { Injectable } from "@angular/core";
import { Subject } from "rxjs";
@Injectable({
providedIn: "root"
})
export class AdminRoleLocalService {
public newRoleAdded = new Subject<boolean>();
constructor() {}
newRoleAddedEvent() {
this.newRoleAdded.next(true);
}
}
组件 1:
submitAddRoleForm(addRoleForm: AddRoleData) {
this.isFetching = true;
this.roleService.addRoleData(addRoleForm).subscribe(
httpResponse => {
console.log(httpResponse);
this.isFetching = false;
this.roleLocalService.newRoleAddedEvent();
this.router.navigate(["/role-management"]);
},
errorMessage => {
console.log(errorMessage);
this.errorMessageContent(errorMessage);
}
);
}
组件 2:
ngOnInit() {
this.roleLocalService.newRoleAdded.subscribe(flag => {
this.newRoleAddedFlag = flag;
});
}
i am seeing newRoleAddedFlag as undefined where as i am expecting value as True. I am unable to find out where i am seeing. Request you to help me out.
试试
public newRoleAdded = new BehaviorSubject<boolean>(true);
BehaviorSubject
是一个类似于 Subject
的可观察对象。但是你用一个值启动你的可观察对象,当你订阅它时,你会得到最后一个值。
您可以尝试使用
public newRoleAdded = new ReplaySubject<boolean>(1);
在这种情况下,您无需设置初始值,第二个组件将等待 next
方法调用。或者你可以使用
public newRoleAdded = new BehaviorSubject<boolean>(null);
并通过方法访问:
getNewRoleAddedObservable(): Observable<boolean> {
return this.newRoleAdded.pipe(filter(value => value !=null)).asObservable();
}
永远不要暴露主题public这是不好的做法。