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

Маршрутизатор Angular 4 и angularfire2 перемещается, но предыдущий компонент все еще отображается

Я работаю над проектом, используя Angular 4 и angularfire2 (firebase), я пытаюсь перейти на домашнюю страницу после того, как пользователь успешно вошел в систему с помощью третьей стороны (Google или Facebook).

Проблема заключается в том, что после аутентификации пользователя с помощью всплывающего окна angularfire2 маршрутизатор правильно перемещается (ссылка в браузере меняется, и домашний компонент виден), но компонент входа все еще существует!

Я не уверен, связана ли проблема со знаком angularfire2 во всплывающих окнах или с самим angular 4, какие-либо предложения?

обратный вызов angularfire2:

signInWithGoogle() {
  this.angularFireAuth.auth.signInWithPopup(new 
  firebase.auth.GoogleAuthProvider()).then((infos) => {
  this.router.navigate['/home'];
  });
}

конфиг роутера:

const memberSpaceRoutes: Routes = [
       { path: 'sign-in', component: SignInComponent },
       { path: 'home', component: Home},
]
24.09.2017

  • Нет идей, ребята? 25.09.2017
  • какой адрес в браузере после авторизации 25.09.2017

Ответы:


1

Я не уверен в объяснении, но вы находитесь вне контекста, о котором знал бы angular (в частности, зоны)

Импортируйте NgZone и используйте внутри своего затем

this.zone.run(() => {this.router.navigate['/home']})
12.10.2017

2

Попробуйте этот pathMatch: «полный» в конфигурации вашего маршрута

const memberSpaceRoutes: Routes = [
       { path: 'sign-in', component: SignInComponent, pathMatch: 'full' },
       { path: '/home', component: Home, pathMatch: 'full'},
]
25.09.2017
  • Это не помогло! 25.09.2017

  • 3

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

    Однако возможно, что ваш код может вызвать некоторую ошибку времени выполнения, и если ваш код использует BrowserAnimationsModule, то angular может не заменить предыдущий компонент новым, а вместо этого добавить новый компонент поверх старых. Это известная проблема, связанная с модулем BrowserAnimationsModule в Angular 4. Вы можете либо устранить ошибку времени выполнения из своего кода, либо избавиться от модуля BrowserAnimationsModule.

    Вы можете ознакомиться с описанием проблемы на github: https://github.com/angular/angular/issues/19093

    23.11.2017

    4

    Это случилось и со мной. Решение состоит в том, чтобы вызвать метод router.navigate вне функции signInWithGoogle. Более подробно: причина в том, что signInWithGoogle возвращает обещание, и при запуске метода router.navigate в этой функции до того, как обещание будет полностью разрешено, новый компонент (маршрут) встраивается в текущий компонент, что приводит к отображению обоих маршрутов. . Вы хотите запустить метод router.navigate вне функции signInWithGoogle и только ПОСЛЕ того, как обещание будет разрешено, и оно должно работать. По крайней мере, это сработало для меня.

    26.02.2018
    Новые материалы

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

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

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

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

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

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

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