Reputation:
I want to make a redirect in my application that takes 6 seconds and then it will redirect you to the homepage of my application. I can't figure out how to do it though.
I am using Angular and the only Stack Overflow post out there about this subject is in AngularJS.
--------------------UPDATE---------------
These are my routes :
import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { FormsModule } from "@angular/forms";
import { HttpModule } from "@angular/http";
import { RouterModule } from "@angular/router";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { AppComponent } from "./components/app/app.component";
import { HomeComponent } from "./components/home/home.component";
import { PageHeaderComponent } from "./components/pageheader/pageheader.component";
import { ChangeLanguageComponent } from "./components/change-language/change-language.component";
import { CheckinComponent } from "./components/checkin/checkin.component";
import { TranslationService } from "./services/translation.service";
import { ClockService } from "./services/clock.service";
import { ConfigService } from "./services/config.service";
import { DomainService } from "./services/domain.service";
import { KeyboardService } from "./services/keyboard.service";
import { BookingService } from "./services/booking.service";
import { MainService } from "./services/main.service";
import { ForgotMarkComponent } from "./components/forgotmark/forgotmark.component";
import { ContentHolderComponent } from "./components/contentholder/contentholder.component";
@NgModule({
declarations: [
AppComponent,
HomeComponent,
PageHeaderComponent,
ChangeLanguageComponent,
CheckinComponent,
ForgotMarkComponent,
ContentHolderComponent
],
imports: [
CommonModule,
HttpModule,
FormsModule,
BrowserAnimationsModule,
RouterModule.forRoot([
{ path: "", redirectTo: "home", pathMatch: "full" },
{ path: "home", component: HomeComponent },
{ path: "Change-Language", component: ChangeLanguageComponent },
{ path: "checkin", component: CheckinComponent },
{ path: "forgotmark", component: ForgotMarkComponent },
{ path: "**", redirectTo: "home" }
])
],
providers: [
TranslationService,
ClockService,
ConfigService,
DomainService,
KeyboardService,
BookingService,
MainService
]
})
export class AppModuleShared {}
This is my TS file :
import { TranslationService } from "../../services/translation.service";
import { ClockService } from "../../services/clock.service";
import { PageHeaderComponent } from "../pageheader/pageheader.component";
import { Component, Injectable, OnInit } from "@angular/core";
import { DatePipe, Location } from "@angular/common";
import { Router } from '@angular/router';
@Component({
selector: "forgotmark",
templateUrl: "./forgotmark.component.html",
styleUrls: ["./forgotmark.component.css"]
})
@Injectable()
export class ForgotMarkComponent implements OnInit {
constructor(
public translationservice: TranslationService,
public clockservice: ClockService,
private location: Location,
private router: Router
) { }
ngOnInit() {
setTimeout(() => {
this.router.navigate(['/home']);
}, 6000);
}
goBack(): void {
this.location.back();
}
}
Upvotes: 1
Views: 4247
Reputation: 16837
You can add a resolve function, that will take a few seconds to complete.
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { OneComponent } from './one.component';
import { TwoComponent } from './two.component';
import { delay } from 'rxjs/operators';
import { of } from 'rxjs/observable/of';
const routes = [
{
path: 'one', component: OneComponent, resolve: {
load: 'loading'
}
},
{ path: 'two', component: TwoComponent },
]
@NgModule({
imports: [BrowserModule, FormsModule, RouterModule.forRoot(routes)],
declarations: [AppComponent, OneComponent, TwoComponent],
providers: [{
provide: 'loading',
useValue: () => of(true).pipe(delay(3000))
}],
bootstrap: [AppComponent]
})
export class AppModule { }
With this routing configuration, any time you try to navigate to /one
route, you will have to wait 3 seconds. You can add the same resolve function to your home component.
Upvotes: 0
Reputation: 66
`
import { Router } from '@angular/router';
export class YourComponent implements OnInit {
constructor(private router: Router) {}
ngOnInit() {
setTimeout(() => {
this.router.navigate(['/redirectURL']);
}, 6000);
}
}
`
You can do something like this and your Routes Configuration.
Upvotes: 4
Reputation: 6983
Do something like this.
in your ts file
import { Router } from '@angular/router';
constructor(private router: Router) {}
ngOnInit(){
setTimeout(() => {
this.router.navigate(['/destination']);
}, 6000);
}
Upvotes: 0