मैंने अपलोड के दौरान पृष्ठ छोड़ने से बचने के लिए CanDeactivate
गार्ड लागू किया है और यह काम करता है। समस्या यह है कि मेरा संदेश हमेशा एक डिफ़ॉल्ट संदेश होता है (ब्राउज़र भाषा की वजह से डच में) और यहां तक कि एक संदेश भी सेट करना, फिर भी एक ही डिफ़ॉल्ट confirm
विंडो दिखाएं। मैं अपना खुद का संदेश लिखना चाहता हूं (वास्तव में मेरे पास एक मॉडल है जिसे मैं दिखाना चाहता हूं, लेकिन पहले मैं अपने सरल संदेश के साथ काम करना चाहता हूं)संदेश की पुष्टि कर सकते हैं
कोई विचार क्या हो सकता है? क्या मैं कुछ भूल रहा हूँ? अग्रिम धन्यवाद!
यहाँ कोड
गार्ड है।
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);
}
}
घटक
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;
}
}
एल्मर ने इस प्रश्न के लिए एंडर्स को यहां पाया: [कोणीय 2 - पृष्ठ छोड़ने से पहले सहेजे गए परिवर्तनों के उपयोगकर्ता को चेतावनी दें] (http://stackoverflow.com/questions/35922071/angular-2-warn-user-of-unsaved- परिवर्तन-पहले-छोड़ने वाले पृष्ठ /) –
मैंने इसे देखा है और अभी भी मुझे अपने कस्टम संदेश के बजाय एक डिफ़ॉल्ट संदेश पाठ (डच में) देता है .... मैं कोणीय दस्तावेज़ों और कार्यों से विशिष्ट गार्ड का उपयोग करता हूं लेकिन एक बग है जैसे [यह] (https://github.com/angular/angular/issues/10321) ..मैं इस काम को करने के लिए संघर्ष कर रहा हूं लेकिन अब तक कोई सफलता नहीं है। –