AWS Amplify with Angular - 停止 URL 重定向到索引
AWS Amplify with Angular - Stop URL redirecting to index
我有一个最近迁移到 AWS Amplify 的 Angular 应用程序。不过,我在为特定页面创建 link 时遇到了问题(例如,在电子邮件中发送确认 link)。链接自动重定向到索引页面。如果我尝试通过在地址栏中输入 URL 来导航到某个页面,或者如果我只是重新加载该页面,也会发生同样的事情。
我有一个 app-routing.module.ts 文件,该文件在迁移到 Amplify 之前可以正常工作。当来自本地主机的 运行 时,link 仍然可以正常工作。我该如何解决这个问题?
应用-routing.module:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{
path: '',
loadChildren: './intro/intro.module#IntroModule'
},
{
path: 'login',
loadChildren: './login/login.module#LoginModule'
},
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
app.module
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { MaterialModule } from './material/material.module';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientModule } from '@angular/common/http';
import { NgSelectComponent } from './ng-select/ng-select.component';
import { NgxChartsModule } from '@swimlane/ngx-charts';
import { AmplifyAngularModule, AmplifyService } from 'aws-amplify-angular';
@NgModule({
declarations: [
AppComponent,
NgSelectComponent,
],
imports: [
BrowserModule,
AppRoutingModule,
ReactiveFormsModule,
FormsModule,
BrowserAnimationsModule,
MaterialModule,
HttpClientModule,
NgxChartsModule,
AmplifyAngularModule
],
exports: [
],
providers: [
AmplifyService,
{ provide: 'APIRoot', useValue: 'https://app.rivver-platform.com/api/' },
{ provide: 'colors1', useValue: ['#3dcc85','#ffbe5c','#7b64e0','#ff8370'] },
{ provide: 'colors1', useValue: ['#3dcc85','#ffbe5c','#7b64e0','#ff8370'] },
{ provide: 'colors2', useValue: ['#51c8e0','#7b64e0','#3dcc85','#ffbe5c'] }
],
bootstrap: [AppComponent]
})
export class AppModule { }
app.component
<main [@routeAnimations]="prepareRoute(outlet)">
<router-outlet #outlet="outlet"></router-outlet>
</main>
app.component.ts
import { Component,OnInit } from '@angular/core';
import { RouterOutlet, Router } from '@angular/router';
import { slideInAnimation } from './animations';
import {DomSanitizer} from '@angular/platform-browser';
import {MatIconRegistry} from '@angular/material/icon';
import { LocationStrategy } from '@angular/common';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
animations: [
slideInAnimation
// animation triggers go here
]
})
export class AppComponent implements OnInit {
private loaded = false;
constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer, private locationStrategy: LocationStrategy, private router: Router) {
ngOnInit() {
let _this = this;
setTimeout(function(){
_this.loaded = true;
},1);
}
prepareRoute(outlet: RouterOutlet) {
if (!this.loaded){
history.pushState(null, null, location.href);
}
return outlet && outlet.activatedRouteData && outlet.activatedRouteData['animation'];
}
}
编辑:我尝试删除 prepareRoute、AmplifyAngularModule 和 AmplifyService,但问题仍然存在。
出于安全目的,AWS Amplify 阻止来自外部来源的所有链接并将它们重定向到索引。要编辑这些规则,请转到重写和重定向。下一页解释了如何使用这些规则。
我有一个最近迁移到 AWS Amplify 的 Angular 应用程序。不过,我在为特定页面创建 link 时遇到了问题(例如,在电子邮件中发送确认 link)。链接自动重定向到索引页面。如果我尝试通过在地址栏中输入 URL 来导航到某个页面,或者如果我只是重新加载该页面,也会发生同样的事情。
我有一个 app-routing.module.ts 文件,该文件在迁移到 Amplify 之前可以正常工作。当来自本地主机的 运行 时,link 仍然可以正常工作。我该如何解决这个问题?
应用-routing.module:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{
path: '',
loadChildren: './intro/intro.module#IntroModule'
},
{
path: 'login',
loadChildren: './login/login.module#LoginModule'
},
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
app.module
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { MaterialModule } from './material/material.module';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientModule } from '@angular/common/http';
import { NgSelectComponent } from './ng-select/ng-select.component';
import { NgxChartsModule } from '@swimlane/ngx-charts';
import { AmplifyAngularModule, AmplifyService } from 'aws-amplify-angular';
@NgModule({
declarations: [
AppComponent,
NgSelectComponent,
],
imports: [
BrowserModule,
AppRoutingModule,
ReactiveFormsModule,
FormsModule,
BrowserAnimationsModule,
MaterialModule,
HttpClientModule,
NgxChartsModule,
AmplifyAngularModule
],
exports: [
],
providers: [
AmplifyService,
{ provide: 'APIRoot', useValue: 'https://app.rivver-platform.com/api/' },
{ provide: 'colors1', useValue: ['#3dcc85','#ffbe5c','#7b64e0','#ff8370'] },
{ provide: 'colors1', useValue: ['#3dcc85','#ffbe5c','#7b64e0','#ff8370'] },
{ provide: 'colors2', useValue: ['#51c8e0','#7b64e0','#3dcc85','#ffbe5c'] }
],
bootstrap: [AppComponent]
})
export class AppModule { }
app.component
<main [@routeAnimations]="prepareRoute(outlet)">
<router-outlet #outlet="outlet"></router-outlet>
</main>
app.component.ts
import { Component,OnInit } from '@angular/core';
import { RouterOutlet, Router } from '@angular/router';
import { slideInAnimation } from './animations';
import {DomSanitizer} from '@angular/platform-browser';
import {MatIconRegistry} from '@angular/material/icon';
import { LocationStrategy } from '@angular/common';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
animations: [
slideInAnimation
// animation triggers go here
]
})
export class AppComponent implements OnInit {
private loaded = false;
constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer, private locationStrategy: LocationStrategy, private router: Router) {
ngOnInit() {
let _this = this;
setTimeout(function(){
_this.loaded = true;
},1);
}
prepareRoute(outlet: RouterOutlet) {
if (!this.loaded){
history.pushState(null, null, location.href);
}
return outlet && outlet.activatedRouteData && outlet.activatedRouteData['animation'];
}
}
编辑:我尝试删除 prepareRoute、AmplifyAngularModule 和 AmplifyService,但问题仍然存在。
出于安全目的,AWS Amplify 阻止来自外部来源的所有链接并将它们重定向到索引。要编辑这些规则,请转到重写和重定向。下一页解释了如何使用这些规则。