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;
    }
  }

}

იმედია ეს დახმარებას გაუწევს