我搞错了,说货币化没有罪恶感。我还在ngOninit中得到一个错误,该错误说货币化不能用于输入string。
export class MoviesPageComponent implements OnInit {
movies: MovieResults[] = [];
monetization: string;
constructor(private getMovies: GetMoviesService,
private route: ActivatedRoute) { }
ngOnInit(): void {
this.route.paramMap.subscribe((params: ParamMap) => {
this.monetization = params.get('monetization');
});发布于 2022-03-14 17:45:32
您会得到此错误,因为monetization没有在构造函数中初始化。
你需要做的是让这个属性是可选的。
export class MoviesPageComponent implements OnInit {
movies: MovieResults[] = [];
monetization?: string; // <-- add ? here
constructor(private getMovies: GetMoviesService,
private route: ActivatedRoute) { }
ngOnInit(): void {
this.route.paramMap.subscribe((params: ParamMap) => {
this.monetization = params.get('monetization');
});发布于 2022-03-14 17:57:39
如果我们看一下ParamMap.get的功能规范.
get(name: string): string | null返回类型是string | null,但是monetization属性的类型是
monetization: string;当我们执行时,由于类型不一致而导致分配失败。
this.monetization = params.get('monetization'); //<-- Return type is string | null为了解决这个问题,
monetization?: string。用?后缀属性名会引发类型中的undefinedParamMap.get(...)读取后值的空值。就像this.monetization = params.get('monetization') ?? '';string | undefined | null。就像monetization: string | null | undefined。https://stackoverflow.com/questions/71471958
复制相似问题