这是我的服务类
export class DataService {
public isConfirm = new Subject();
sentIsConfirm(isConfirm: boolean) {
this.isConfirm.next(isConfirm);
}
getIsConfirm(): Observable<any> {
return this.isConfirm.asObservable();
}
}
这是我的component1
constructor(
private dataService: DataService
)
isConfirm: boolean = true;
leave() {
this.dataService.sentIsConfirm(this.Confirm);
}
这是我的另一个组件2. leave()
是html中的一个单击事件。
confirmation: boolean;
canExit(): boolean{
subscription: Subscription;
this.subscription = this.dataService.getIsConfirm().subscribe((isConfirm) => {
console.log(isConfirm);
this.confirmation = isConfirm;
console.log(this.confirmation);
});
}
这是我的巡检员
export class DeactivateGuardService implements CanDeactivate<SolutionCanvasComponent> {
component: Object;
route: ActivatedRouteSnapshot;
constructor() { }
canDeactivate(component: Component2,
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot,
nextState?: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return component.canExit();
}
但是我无法从component1到component2获取数据。或者我是否需要将服务添加到模块中的任何提供者。
发布于 2021-09-03 03:57:54
您需要在调度事件之前注册可观察对象:
import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class DataServiceService {
public isConfirm = new Subject();
public isConfirm$: Observable<any>;
constructor() {
this.isConfirm$ = this.isConfirm.asObservable();
}
sentIsConfirm(isConfirmed: boolean) {
this.isConfirm.next(isConfirmed);
}
getIsConfirm(): Observable<any> {
return this.isConfirm$;
}
}
https://stackoverflow.com/questions/69039090
复制相似问题