我正在从事 Angular 6 项目。我正在为我的 routeGuards 使用 canDeactivate 和一个弹出窗口来显示路由离开消息。但是问题出现在我的价格清单保护服务上悬停 .flatMap(isAllow)=> {
错误:'(isAllow: boolean) => boolean' 类型的参数不可分配给'(value: boolean, index: number) => ObservableInput<{}>' 类型的参数。
我想在 price-list-guard.service.ts 中做这样的事情:
价目表-guard.service.ts
@Injectable()
export class PriceListFormGuard implements CanDeactivate<PriceListFormComponent> {
constructor(private promptService: PromptService) { }
canDeactivate(component: PriceListFormComponent):boolean {
if (component.isDirty) {
this.promptService.showPrompt('Warning', 'Unsaved changes detectect on the current page);
this.promptService.callback.flatMap((isAllow) => {
if (isAllow) {
return true;
} else {
return false;
}
});
}
}
}
提示服务.ts
@Injectable()
export class PromptService {
title: string;
message: string;
display = 'none';
callback: Subject<boolean>;
constructor() {
this.callback = new Subject<boolean>();
}
showPrompt(title: string, message: string): void {
this.title = title;
this.message = message;
this.display = 'block';
}
close(confirm?: boolean): void {
this.title = null;
this.message = null;
this.display = 'none';
if (confirm != null) {
this.callback.next(confirm);
}
}