首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在ngOnit错误中初始化类属性

无法在ngOnit错误中初始化类属性
EN

Stack Overflow用户
提问于 2022-03-14 17:36:47
回答 2查看 42关注 0票数 0

我搞错了,说货币化没有罪恶感。我还在ngOninit中得到一个错误,该错误说货币化不能用于输入string。

代码语言:javascript
复制
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');
    });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-14 17:45:32

您会得到此错误,因为monetization没有在构造函数中初始化。

你需要做的是让这个属性是可选的。

代码语言:javascript
复制
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');
    });
票数 1
EN

Stack Overflow用户

发布于 2022-03-14 17:57:39

如果我们看一下ParamMap.get的功能规范.

代码语言:javascript
复制
get(name: string): string | null

返回类型是string | null,但是monetization属性的类型是

代码语言:javascript
复制
monetization: string;

当我们执行时,由于类型不一致而导致分配失败。

代码语言:javascript
复制
 this.monetization = params.get('monetization'); //<-- Return type is string | null

为了解决这个问题,

  1. 将属性设置为可选的,如另一个答案中所述。就像monetization?: string。用?后缀属性名会引发类型中的undefined
  2. 或者,提供一个默认值,以满足从ParamMap.get(...)读取后值的空值。就像this.monetization = params.get('monetization') ?? '';
  3. 如果不愿意将属性设置为可选,则可以显式地为属性的类型提供string | undefined | null。就像monetization: string | null | undefined
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71471958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档