4

私はAngular 6プロジェクトに取り組んでいます。routeGuards に canDeactivate を使用し、ルートの離脱メッセージを表示するポップアップを使用しています。しかし、問題は私のprice-list-guard-service on hover .flatMap(isAllow)=> {

エラー:タイプ '(isAllow: boolean) => boolean' の引数は、タイプ '(value: boolean, index: number) => ObservableInput<{}>' のパラメータに代入できません..

price-list-guard.service.ts で次のようなことをしたかったのです。

price-list-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;
                }
            });
        }
    }
}

プロンプト-service.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);
        }
    }
4

2 に答える 2