Zaimplementowałem ochronę CanDeactivate
, aby uniknąć opuszczenia strony przez użytkownika podczas przesyłania i działa. Problem polega na tym, że moja wiadomość jest zawsze domyślną wiadomością (w języku holenderskim ze względu na język przeglądarki), a nawet ustawienie samej wiadomości nadal pokazuje to samo domyślne okno confirm
. Chciałbym napisać własną wiadomość (w rzeczywistości mam modalny, który chcę pokazać, ale najpierw chciałbym zobaczyć pracę z prostym komunikatem).CanDeactivate confirm message
Jakieś pomysły, co to może być? Czy czegoś brakuje? Z góry dziękuję!
oto kod
straży.
import { Injectable, ViewContainerRef } from '@angular/core';
import { CanDeactivate } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { DialogService } from '../services';
export interface PendingUpload {
canDeactivate:() => boolean | Observable<boolean>;
}
@Injectable()
export class PendingUploadGuard implements CanDeactivate<PendingUpload> {
constructor(private dialogService: DialogService, private viewContainerRef: ViewContainerRef) { }
canDeactivate(component: PendingUpload): boolean | Observable<boolean> {
return component.canDeactivate()
? true
: confirm("Test custom message");
//dialog I want to use later
//this.dialogService.confirm("modal title", "modal body", this.viewContainerRef);
}
}
Komponent
import { Component, OnInit, HostListener } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { PendingUpload } from '../../shared/validators/pending-upload.guard';
import './../../rxjs-operators';
@Component({
selector: 'component-selector',
templateUrl: './html',
styleUrls: ['./css']
})
export class ScannerUploadComponent implements OnInit, PendingUpload {
uploading: boolean = false;
constructor() { }
ngOnInit() {
this.uploading = false;
}
@HostListener('window:beforeunload')
canDeactivate(): Observable<boolean> | boolean {
return !this.uploading;
}
}
Elmer znaleźć Anders na to pytanie tutaj: [kątowa 2 - Ostrzeż użytkownika niezapisanych zmian przed opuszczeniem strony] (http://stackoverflow.com/questions/35922071/angular-2-warn-user-of-unsaved- zmiany wcześniej nie pozostawiając stron /) –
widziałem to i nadal daje mi domyślny tekst wiadomości (w języku niderlandzkim) zamiast mojego asn .... używam od konkretnego strażnika kątowe docs i dzieł, ale ma błąd jak [to] (https://github.com/angular/angular/issues/10321) ..I'm zmaga się do tej pracy, ale bez sucess aż do teraz. –