У нас есть надстройка Angular 5.5 Outlook (использует office.js) со следующими маршрутами:
const routes: Routes = [
{ path: 'about', component: AboutComponent, canActivate: [AuthGuardService] },
{ path: 'accounts', component: AccountsComponent, canActivate: [AuthGuardService] },
{ path: 'editInvite/:type', component: EditInviteComponent, canActivate: [AuthGuardService] },
{ path: 'login/:reason', component: LoginComponent },
{ path: 'meetings/start', component: MeetingsComponent, canActivate: [AuthGuardService] },
{ path: 'offline', component: OfflineComponent },
{ path: 'redirect/:id/noag', component: RedirectComponent },
{ path: 'redirect/:id', component: RedirectComponent, canActivate: [AuthGuardService] },
{ path: 'settings', component: SettingsComponent, canActivate: [AuthGuardService] }
];
Наш canActivate выглядит следующим образом:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
let hasAccount: boolean = this.credentialService.hasAccount();
let hasData: boolean = this.clientDataService.hasData();
if (hasAccount && hasData) {
return true;
} else {
let redirect: string = "";
if (hasAccount) { //attempt auto-login
redirect = "/redirect/login/noag";
} else {
redirect = "/login/firstLogin";
}
this.sharedDataService.returnToUrl = state.url;
this.router.navigate([redirect]);
return false;
}
}
В Chrome иВ Safari переход к «/ redirect / login / noag» (noag означает отсутствие аутентификации) приводит к многократному срабатыванию ngOnInit объекта RedirectComponent.Обратите внимание, что hasAccount () и hasData () являются простыми проверками и не являются асинхронными.Кроме того, код отлично работает в IE.
У кого-нибудь есть догадки о том, что может происходить, или тесты, которые я могу попытаться помочь мне разобраться?
Спасибо!
РЕДАКТИРОВАТЬ:
Изменение вызова навигации на:
this.router.navigate([redirect], { skipLocationChange: true });
приводит к тому, что ngOnInit () вызывается только один раз, но вызывает интерфейс пользователя для RedirectComponent (сообщение о ходе выполнения и счетчик)), чтобы быть пустым.
Может ли это быть связано с этой старой надстройкой Word Online проблема , но в этом случае происходит для надстройки Outlook?У меня появилась идея попробовать skipLocationChange в одном из комментариев к этому сообщению.