Nano Hash - криптовалюты, майнинг, программирование

Как проверить маршрутизацию и сломать ее, если она не требуется в angular2

Я должен добавить проверку маршрутизации. когда пользователь пытается перенаправить с одной страницы на другую, я должен проверить, есть ли какие-либо несохраненные изменения или нет. Если да, то отображается модальное окно для подтверждения перенаправления, иначе пользователь останется на той же странице.

Я пытался работать с canActivate, но он срабатывал только тогда, когда пользователь загружал приложение не по внутренней маршрутизации.

Я ищу централизованное решение, потому что маршрутизацию можно выполнять из контроллера, представления или href.

Для этого я подписался на router.events, где я могу отслеживать все события маршрутизации. Теперь я просто хочу способ заблокировать маршрутизацию и показать модальное окно, а также отслеживать последнюю маршрутизацию, чтобы, если пользователь нажмет "ОК", я мог продолжить маршрутизацию.

Если это событие NavigationStart, то я должен прервать маршрутизацию в зависимости от условий.

Пожалуйста, предложите, есть ли способ сделать это.

Я должен проверять каждую маршрутизацию в приложении.


Ответы:


1

Вы должны поместить все маршруты под охрану, и все маршруты будут подмаршрутами охраны.

а также используйте canDeactivate, чтобы проверить, сохранены ли данные или нет.

{ path: 'guard', component:  GuardsComponent , canDeactivate:[CanDeactivateGuard]},

Можно отключить

import { Injectable } from '@angular/core';
import { CanDeactivate } from '@angular/router';
import { Observable } from 'rxjs/Observable';

export interface CanComponentDeactivate {
  canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;
}

@Injectable()
export class CanDeactivateGuard implements CanDeactivate<CanComponentDeactivate> {

  canDeactivate(component: CanComponentDeactivate) {
    return component.canDeactivate ? component.canDeactivate() : true;
  }

}
10.10.2017
  • Эй, вся моя маршрутизация находится в дочернем маршруте приложения, есть ли способ применить его на маршрутах Чили? 10.10.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..