typescript - არის თუ არა გზა იმის დასადგენად, თუ როდის გადადის მომხმარებელი სხვა კომპონენტზე კუთხით?
მინდა ვაჩვენო დამტკიცების-popup როცა მომხმარებელი ცდილობს სხვა გვერდზე გადასვლას. წავიკითხე hostListener და canActivate-ზე ...მაგრამ არ მაქვს იდეა, საიდან დავიწყო!
გთხოვთ დახმარება!! წინასწარ გმადლობთ.
პასუხი #1
პირველ რიგში, თქვენ უნდა შექმნათ პირობის რეჟიმი მარშრუტისთვის, შექმენით ფაილი სახელად can-exit.guard.ts
import {Injectable} from '@angular/core';
import {CanDeactivate} from '@angular/router';
import {Observable} from 'rxjs';
export interface CanExit {
canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;
}
@Injectable()
export class CanExitGuard implements CanDeactivate<CanExit> {
canDeactivate(component: CanExit) {
if (component.canDeactivate) {
return component.canDeactivate();
}
return true;
}
}
შექმენით კიდევ ერთი ფაილი canExit.ts - ეს ფაილი გამოიყენება გპირდათ მნიშვნელობის დაბრუნებისთვის.
import {Observable} from 'rxjs';
export interface CanExit {
canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;
}
თუკი ზემოთ აღნიშნული ფაილები დაამატეთ თქვენს აპლიკაციაში, კონფიგურაცია გაუკეთეთ როუტერის ფაილს ასე
const routes: Routes = [
{
path: 'your Path name',
component: YourComponent ,
canDeactivate: [CanExitGuard],
}
];
// use this configuration in every path of your application
თქვენს კომპონენტის ფაილში საჭიროა ზოგი ცვლილება, ჩართეთ canActivate თქვენს კომპონენტში
import { CanExit } from './../can-exit.guard'; //important
@Component({
// your selector and component defs
})
export class YourComponent implements OnInit, CanExit {
constructor() { }
ngOnInit() {
}
canDeactivate(): Promise<any> | boolean {
const confirmResult = confirm('Are you sure you want to leave this page ? ');
if (confirmResult === true) {
return true;
} else {
return false;
}
}
}
იმედია ეს დახმარებას გაუწევს
