Cuando hago una propiedad como id!:string; o id:cadena=''; cuando asigno el valor de params me sale un error
(propiedad) MoreParametersComponent.id: string ts(2322)Type 'string | null' no se puede asignar al tipo 'cadena'. El tipo 'null' no se puede asignar al tipo 'string'.
import { Component, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; @Component({ selector: 'app-more-parameters', templateUrl: './more-parameters.component.html', styleUrls: ['./more-parameters.component.css'] }) export class MoreParametersComponent implements OnInit { id!: string; // or id:string=''; id2:number=0; constructor(private activatedRoute:ActivatedRoute) { } ngOnInit(): void { this.activatedRoute.paramMap.subscribe(params=>{ this.id=params.get('id'); // gives the above error here this.id2=parseInt(params.get('id2'));//error }); } }¿Cómo soluciono este error?
Mi resto del código:
aplicación.componente.html
<a routerLink=""> Home </a><br> <a routerLink="one-parameter,'p01'"> One-Parameter </a><br> <a routerLink="more-parameter,{id:'p02',id2:123}"> More-Parameter </a> <br><br> <router-outlet></router-outlet> <br><br>Ruta.config.ts
import { Routes } from '@angular/router' import { HomeComponent } from './home/home.component'; import { MoreParametersComponent } from './more-parameters/more-parameters.component'; import { OneParamterComponent } from './one-paramter/one-paramter.component'; export const mainroute:Routes=[ {path:'',component:HomeComponent}, {path:'one-parameter',component:OneParamterComponent}, {path:'more-parameter',component:MoreParametersComponent} ];El retorno de ParamMap.get es una string | null que no coincide con su tipo de id .
Podría lanzar el retorno de ParamMap.get a una cadena como params.get('id') as string
O podría suscribirse a params en su lugar, que devuelve un objeto con tipo de propiedad any y accede al id param como una clave de objeto params.id . Ver https://angular.io/api/router/Params