Angular redirect me to the home page when I try to acces to another page/component

Rafael Machado

I'm making a Portfolio with Spring Boot and Angular. I have, in this web page, different sections like skills, experience, projects, education, etc. In each you can add or edit the info, but it requires that you enter to another page.Every time I try to enter to the page or component /nuevaskill for add a new one redirect me to the home page. The only form to create a new skill is enter to the URL directly o using phpmyadmin, and then I don't have any problem to edit the skill created. For make some changes to the portfolio you need to enter like an admin, but this isn't a problem. Here are the next files: model, service,components and templates from skills and new-skills, and the routing-module, and an image from the console that indicates the trace route.

      model: 
        skills.ts
        export class Skills{
            id?: number;
            nombreS: string;
            porcentaje: number;
        
            constructor(nombreS: string, porcentaje: number){
                this.nombreS=nombreS;
                this.porcentaje=porcentaje;
            }
        }

-------------------------------------------------------------------------------
    service
    s-skills.service.ts
    import { HttpClient } from "@angular/common/http";
    import { Injectable } from "@angular/core";
    import { Observable } from "rxjs";
    import { Skills } from "../model/skills";
    
    @Injectable({
        providedIn: 'root'
    })
    export class SSkillsService{
    skURL = "http://localhost:8080/skills/"
    
        constructor(private httpClient: HttpClient){}
    
        public lista():Observable<Skills[]>{
            return this.httpClient.get<Skills[]>(this.skURL + 'lista');
        }
    
        public detail(id: number):  Observable<Skills>{
            return this.httpClient.get<Skills>(this.skURL + `detail/${id}`);
        }
    
        public save(skills: Skills): Observable<any>{
            return this.httpClient.post<any>(this.skURL + 'create', skills);
        }
    
        public update(id: number, skills: Skills):Observable<any>{
            return this.httpClient.put<any>(this.skURL + `update/${id}`, skills);
        }
    
        public delete(id: number): Observable<any>{
            return this.httpClient.delete<any>(this.skURL + `delete/${id}`);
        }
    
    }

-------------------------------------------------------------------------------
    skills.component.ts
    import { Component, OnInit } from '@angular/core';
    import { Skills } from 'src/app/model/skills';
    import { SSkillsService } from 'src/app/services/s-skills.service';
    import { TokenService } from 'src/app/services/token.service';
    
    
    @Component({
      selector: 'app-skills',
      templateUrl: './skills.component.html',
      styleUrls: ['./skills.component.css']
    })
    export class SkillsComponent implements OnInit {
      skills: Skills[] = [];
    
      constructor(private sSkills: SSkillsService, private tokenService: TokenService) {
       }
    
      isLogged = false;
    
      ngOnInit(): void {
        this.cargarSkills();
        if(this.tokenService.getToken()){
          this.isLogged = true;
        } else {
          this.isLogged = false;
        }
      }
    
      cargarSkills():void{
        this.sSkills.lista().subscribe(data => {this.skills = data;})
      }
     
      delete(id?: number){
        if(id != undefined){
          this.sSkills.delete(id).subscribe(
            data => {
              this.cargarSkills();
            }, err => {
              alert("No se pudo borrar la skill");
            }
          );
        }
      }
    
    }

---------------------------------------------------------

    skills.component.html
        <section class="section_skills p-4">
            <div class="cont-start rounded-5" >
                
                <div class="d-flex justify-content-center">
                    <h1 class="title d-flex justify-content-center pt-5 pb-5">Skills</h1> 
                    <a href="#" class="title pt-4 ps-3">
                        <i class="bi bi-plus-circle-fill ps-3" routerLink="/nuevaskill" *ngIf="isLogged"></i>   
                    </a>
                </div>
               
                <div class="row">
                    <div class="col-sm-4 col-md-4 col-lg-4 text-center pb-5 circulo" *ngFor="let Skill of skills">
                        <circle-progress
                            [percent]="(Skill.porcentaje)"
                            [radius]="100"
                            [title]="(Skill.nombreS)"
                            [titleColor]="'white'"
                            [titleFontSize]="'2em'"
                            [showUnits]="false"
                            [showSubtitle]="false"
                            [outerStrokeWidth]="16"
                            [innerStrokeWidth]="6"
                            [outerStrokeColor]="'#0b6986'"
                            [innerStrokeColor]="'#9CD3D8'"
                            [animation]="true"
                            [animationDuration]="400"
                            [showBackground]="true"
                            [backgroundColor]="'white'"
                            [backgroundOpacity]="0.2"
                            class="pb-2"
                        ></circle-progress>   
                       
                        <div class="pb-3">
                            <td *ngIf="isLogged">
                                <button class="btn btn-light" routerLink="/editskill/{{Skill.id}}">
                                <i class="bi bi-pencil-fill"></i></button>
                            </td>
                            <td *ngIf="isLogged">
                                <button class="btn btn-danger" (click)="delete(Skill.id)">
                                    <i class="bi bi-trash-fill"></i>Borrar</button>
                            </td>    
                        </div>
                       
                    </div>
                    
                </div>
        
            </div>
        </section>
----------------------------------------------------

    new-skills.component.ts
    import { Component, OnInit } from '@angular/core';
    import { Router } from '@angular/router';
    import { Skills } from 'src/app/model/skills';
    import { SSkillsService } from 'src/app/services/s-skills.service';
    
    @Component({
      selector: 'app-new-skills',
      templateUrl: './new-skills.component.html',
      styleUrls: ['./new-skills.component.css']
    })
    export class NewSkillsComponent implements OnInit {
      nombreS: string;
      porcentaje: number;
    
      constructor(private sSkills: SSkillsService, private router: Router) {}
    
      ngOnInit(): void {
      }
    
      onCreate():void{
        const skill = new Skills(this.nombreS, this.porcentaje);
        this.sSkills.save(skill).subscribe(data => {
          alert("Skill añadida");
          this.router.navigate(['']);
        }, err =>{
          alert("La creación de una nueva skill falló");
          this.router.navigate(['']);
        })
      }
    
    }
--------------------------------------------------------------------------------------

    new-skills.component.html
    <div class="container">
        <div class="row">
            <div>
                <form (ngSubmit)="onCreate()" novalidate #f="ngForm" class="pb-3">
                    <h1 class="d-flex justify-content-center">Incorpore una nueva skill</h1>
                    <div class="form-group">
                        <label for="nombreS" class="text-white pt-2 pb-2">Nombre de la skill</label>
                        <input type="text" class="form-control" name="nombreS" id="nombreS" [(ngModel)]="nombreS" required>
                    </div>
                    <div class="form-group">
                        <label for="porcentaje" class="text-white pt-2 pb-2">Nivel de la skill en porcentaje</label>
                        <input type="number" class="form-control" name="porcentaje" id="porcentaje" [(ngModel)]="porcentaje" required>
                    </div>
                    <button class="btn btn-primary">
                        Agregar skill
                    </button>
                </form>
            </div>
        </div>
    </div>
-------------------------------------------------------------------------

    app-routing.module.ts
    import { NgModule } from '@angular/core';
    import { RouterModule, Routes } from '@angular/router';
    import { EditAboutmeComponent } from './components/about-me/edit-aboutme.component';
    import { EditEducacionComponent } from './components/education/edit-educacion.component';
    import { NewEducacionComponent } from './components/education/new-educacion.component';
    import { EditExperienciaComponent } from './components/experience/edit-experiencia.component';
    import { NewExperienciaComponent } from './components/experience/new-experiencia.component';
    import { HomeComponent } from './components/home/home.component';
    import { LoginComponent } from './components/login/login.component';
    import { NotFoundComponent } from './components/not-found/not-found.component';
    import { EditProyectoComponent } from './components/projects/edit-proyecto.component';
    import { NewProyectoComponent } from './components/projects/new-proyecto.component';
    import { EditSkillsComponent } from './components/skills/edit-skills.component';
    import { NewSkillsComponent } from './components/skills/new-skills.component';
    
    
    const routes: Routes = [
      {path: 'login', component: LoginComponent},
      {path: 'nuevaexp', component: NewExperienciaComponent} ,
      {path: 'editexp/:id', component: EditExperienciaComponent},
      {path: 'nuevaeduc', component: NewEducacionComponent},
      {path: 'editeduc/:id', component: EditEducacionComponent},
      {path: 'nuevaproy', component: NewProyectoComponent},
      {path: 'editproy/:id', component: EditProyectoComponent},
      {path: 'editaboutme/:id', component: EditAboutmeComponent}, 
      {path: 'nuevaskill', component: NewSkillsComponent},
      {path: 'editskill/:id', component: EditSkillsComponent},
      {path: '', component: HomeComponent},
      {path: "**", component: NotFoundComponent}
    
    ];
    
    @NgModule({
      imports: [RouterModule.forRoot(routes, { enableTracing: true })],
      exports: [RouterModule]
    })
    export class AppRoutingModule { }

Trace of the route indicated by the console

user2304483

Your router link should be inside the "a" tag

Try the following:

<a [routerLink]="['/nuevaskill']" class="title pt-4 ps-3" *ngIf="isLogged">
    <i class="bi bi-plus-circle-fill ps-3"></i>   
</a>

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

why page redirect to home page when try to change language?

when i try to redirect to decoded url it will redirect me to my myurl.com/myurl instead taking me to the page

I get this exception java.lang.IllegalStateException when I try to redirect to another page

How do I redirect to different home page when user is logged in Angular?

when i am try to redirect to another page in laravel 5.6 then getting error like "Sorry, the page you are looking for could not be found."

I got error when i try to acces an image folder?

Why in my Angular-project does not replace home-page when I go to another route, and just adds the bottom of the page?

NoMethodError when I try to acces a field of an object taken from the DB

Redirect to another page Angular 2

When I redirect to another page, the local storage is corrupted

Angular routing always redirect to home page

My page turns blank when I try to use a controller in angular

redirect user to home page when user does not have any permission in angular13

Button not taking me to another page when I put it inside form

Login Page is sending me to Home Page when i press system back button and without loggin

Heroku ReactJS app. Home route is functional, but when I try another route it shows up as 404 Not Found

500 error message when i try and redirect to signup and login page in production

Unable to redirect to another page using angular js

Button redirect to another page in Angular 5

Redirect to another page using angular 6

Redirect to another HTML page in Angular JS

Angular: Click button to redirect to another page not working

Redirect to the home page in nginx

how to redirect to home page

How to redirect to Home page?

CanDeactivateGuard redirect to the home page

Apache home page redirect

How to redirect to another page when reloaded in Javascript?

Laravel Redirect Me to /Home Link When Clicking on the Reset Password Link