【发布时间】:2021-12-18 18:34:15
【问题描述】:
当我将属性设为 id!:string;或 id:string='';当我分配参数的值时,我得到一个错误
(属性)MoreParametersComponent.id:字符串 ts(2322)类型'字符串| null' 不可分配给类型 'string'。 类型 'null' 不能分配给类型 '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
});
}
}
如何解决此错误?
我的其余代码:
app.component.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>
Route.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}
];
【问题讨论】:
-
到底是什么问题?看起来
params.get可能会返回null,而null不能分配给this.id。你需要处理这种情况。 -
现在我通过添加一些关于这个问题的必要代码来对我的代码进行一些更改。
-
您可以随时使用
this.id=params.get('id') || null或this.id2=parseInt(params.get('id') || 0) -
只需将
"strictPropertyInitialization": false设置在tsconfig.json下compilerOptions并赋值。我认为处理这个只是不必要的开销。 -
id: string | null;
标签: angular typescript